2016-04-02 9 views
1

Kann ich eine Dynamic Switch-Anweisung erstellen, dh wenn ich eine Liste habe, die 1,2,3,4,5 enthält, anstatt manuell Fall 1 zu tun: Fall 2: usw. kann ich das tun eine for-Schleife wie unten gezeigt?Switch-Anweisung für Elemente in der Liste

Der Code funktioniert nicht. Visual Studio gibt eine Fehlermeldung aus, dass case ein referenziertes Label sein muss, ich bin ein Anfänger.

switch (selectedShow) 
    { 
     //Show list is a list of type Shows 
     for (int i = 0; i < showList.Count; i+=1) 
     { 
      case i: 
      { 
      waitingList[waitingList.Count].Show = showList[selectedShow]; 
      break; 
      } 
     } 

    } 
+0

Es macht keinen Sinn, eine dynamische Case-Anweisung zu haben, weil Sie nicht wissen würden, was in den Case-Blöcken geschrieben werden soll. Und wenn Sie wissen, was Sie schreiben sollen, brauchen Sie die case-Anweisung sowieso nicht. – Rob

+0

Ich denke Wörterbuch passt am besten zu Ihrem Fall. –

Antwort

1

Es Sie irgendwie scheint nur wollen:

waitingList[waitingList.Count].Show = showList[selectedShow]; 
0

Wie bereits angegeben, benötigen Sie keine case-Anweisung. Sie können einen Code ähnlich dem folgenden schreiben:

//Show list is a list of type Shows 
for (int i = 0; i < showList.Count; i+=1) 
{ 
    waitingList[waitingList.Count].Show = showList[i]; 
    if (someBreakConditionFunction()) 
     break; 
} 
0

Dieser Code-Segment hier:

//Show list is a list of type Shows 
     for (int i = 0; i < showList.Count; i+=1) 
     { 
      case i: 
      { 
      waitingList[waitingList.Count].Show = showList[i]; 
      break; 
      } 
     } 

macht keinen Sinn, für jeden Wert von i Sie den Fall Bedingung ausführt:

statt do:

for (int i = 0; i < showList.Count; i+=1) 
    { 
     waitingList[waitingList.Count].Show = showList[i]; 
    } 
1

Switch-Anweisung wird verwendet, um verschiedene Operationen für verschiedene Werte zu machen. Deshalb wählt der "Fall" den Wert aus, um fortzufahren. In Ihrem Beispiel wird nur eine Operation für einen beliebigen Wert in Ihrer Liste implementiert. Sie müssen also keine "if" -Anweisung anwenden, um die Bedingung zu überprüfen, in der selectedShow einem Element in Ihrer Liste entspricht. Der bevorzugte Weg zur Iteration über die Liste in C# ist für jede Operation. Zum Beispiel:

foreach (var i in showList) 
     { 
      if(i == selectedShow) 
      { 
      waitingList.Last().Show = i; 
      break; 
      } 
     } 

I ersetzt auch unsicheren Waitinglist [waitingList.Count] für mehr klar waitingList.Last() -Methode (Sie müssen möglicherweise mit System.Linq hinzuzufügen, am Anfang der Datei)

.
0
switch (selectedShow) 
{ 
    //Show list is a list of type Shows 
    for (int i = 0; i < showList.Count; i+=1) 
    { 
     waitingList[waitingList.Count].Show = showList[i]; 
     //Add some condition if you want to break the loop. 
     if(breakCondition) 
      break; 
    } 
} 
0

eine forloop Verwendung und if-Anweisung funktionieren sollte. Ich kann die Liste für jede Schleife durchlaufen und wenn die ausgewählte Show (Benutzer wählt im Terminal) ist die aktuelle iterierte Show. Dann kann ich auf die Show in der Warteliste verweisen.

Verwandte Themen