2010-11-24 15 views
43

Ich verwende C#. Ich habe eine Liste von Gegenständen. Ich gehe jeden Artikel mit einem foreach durch. In meinem foreach habe ich viele if Anweisungen einige Sachen überprüfen. Wenn eine dieser if-Anweisungen eine False zurückgibt, möchte ich, dass sie dieses Element überspringt und zum nächsten Element in der Liste geht. Alle folgenden if Anweisungen sollten ignoriert werden. Ich habe versucht, mit einer Pause, aber eine Pause verlässt die ganze foreach Aussage.C# zum nächsten Element in der Liste gehen, basierend auf if-Anweisung in foreach

Dies ist, was ich derzeit haben:

foreach (Item item in myItemsList) 
{ 
    if (item.Name == string.Empty) 
    { 
     // Display error message and move to next item in list. Skip/ignore all validation 
     // that follows beneath 
    } 

    if (item.Weight > 100) 
    { 
     // Display error message and move to next item in list. Skip/ignore all validation 
     // that follows beneath 
    } 
} 

Dank

+0

@PaulG: Warum hast du meinen Beitrag bearbeiten? –

+0

Sie können den Bearbeitungsverlauf sehen, indem Sie auf das Intervall neben 'bearbeitet' klicken - in diesem Fall war es ein einfacher Tippfehler. –

+0

@Steve: Danke. –

Antwort

88

Verwenden continue; statt break; die nächste Iteration der Schleife eingeben, ohne mehr Ausführung des enthaltenen Codes.

foreach (Item item in myItemsList) 
{ 
    if (item.Name == string.Empty) 
    { 
     // Display error message and move to next item in list. Skip/ignore all validation 
     // that follows beneath 
     continue; 
    } 

    if (item.Weight > 100) 
    { 
     // Display error message and move to next item in list. Skip/ignore all validation 
     // that follows beneath 
     continue; 
    } 
} 

Offizielle Dokumente sind here, aber sie haben nicht sehr viel Farbe.

+1

Danke. Ich dachte, dass es weitergehen würde, im Körper der Foreach weiterzumachen. –

+0

@ Brendan - um das zu tun, verwenden Sie einfach keine Steueranweisungen, als ob es eine Kaskade von 'if' Anweisungen außerhalb einer Schleife wäre. –

14

Try this:

foreach (Item item in myItemsList) 
{ 
    if (SkipCondition) continue; 
    // More stuff here 
} 
3

Verwenden Sie continue anstelle von break. :-)

4

Das Schlüsselwort continue wird tun, was Sie wollen. break wird aus der foreach Schleife, so dass Sie das vermeiden wollen.

7

sollten Sie verwenden:

continue; 
Verwandte Themen