2017-01-23 5 views
1

Obligatorisch Ich bin neu in C# und arbeite an einem großen Projekt für die Arbeit und habe in eine Mauer gerannt google kann nicht scheinen, mir zu helfen, zu lösen.Kann nicht implizit Zeichenfolge [] in Zeichenfolge im Fall konvertieren

Ich verstehe, dass der Fall konstant sein muss und ich benutze eine Variable, um einen Fall zu erklären, aber ich kann nicht den richtigen Weg finden, um das Problem zu beheben.

Ich verwende den Code, um zu bestimmen, ob eine Bestellnachricht an einen Markt gesendet werden soll oder nicht.

Die definierte Variable

private string[] m_oKeys = new string[1]; 

Der Schalter mit der Ausgabe

 public void m_ts_OrderAdded(object sender, OrderAddedEventArgs e) 
    { 
     string key = e.Order.SiteOrderKey; 
     switch (key) 
     { 
      case m_oKeys[1]: 
       m_oObject = new e.Order(); 
       m_oKeys = new e.Order.SiteOrderKey(); 
       m_InFlight = new (false); 
       break; 
      case m_oKeys[]: 
       m_oObject[] = e.Order; 
       m_oKeys(1) = e.Order.SiteOrderKey; 
       m_InFlight(1) = false; 
       break; 
      default: 
       break; 
       //handle order not found... 
     } 
    } 
+6

Was ist 'case m_oKeys []' beabsichtigt zu stimmen, gibt es keinen Index angegeben ...? –

+7

Wie Sie bereits erwähnt haben, müssen die in den case-Anweisungen verwendeten Literale Konstanten sein. Die einzige Syntax, die Sie verwenden dürfen, sind konstante Literale wie "case" key1 ":". Sie können hier keine Variable verwenden. Schreiben Sie stattdessen die switch-Anweisung als eine Reihe von if-Anweisungen aus. Was soll das auch? 'case m_oKeys []:' <- no index –

Antwort

1

Sie das Array definiert haben einen einzelnen String enthalten.

private string[] m_oKeys = new string[1]; 

So können Sie nur Referenz auf das erste Element m_oKeys[0]. Wie andere bereits gesagt haben, müssen Sie Konstanten für das case Label verwenden. Vielleicht funktioniert if-else besser für Sie.

public void m_ts_OrderAdded(object sender, OrderAddedEventArgs e) 
    { 
     string key = e.Order.SiteOrderKey; 
     if (key == m_oKeys[0]) 
     { 
      // Do something 
     } 
     else 
     { 
      // Do something else 
     } 
    } 
+0

Vielen Dank, ich denke, ich habe versucht, übermäßig komplex mit der Switch-Logik zu werden. Die Verwendung von if und anderen if-Anweisungen ist eine viel bessere Idee. Vielen Dank! –

Verwandte Themen