2010-11-24 7 views
43

私はC#を使用しています。私はアイテムのリストを持っています。私はforeachを使って各項目をループします。私の内部foreach私はいくつかのものをチェックifステートメントの多くがあります。これらの文のいずれかがfalseを返した場合、その項目をスキップしてリスト内の次の項目に移動します。すべてのステートメントは無視する必要があります。ブレークを使用しようとしましたが、ブレークはforeachステートメント全体を終了します。foreachのif文に基づいてリストの次の項目に移動します

これは私が現在持っているものです。

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 
    } 
} 

おかげ

+0

@PaulGを:なぜあなたは私の投稿を編集しましたか? –

+0

「編集済み」の横にある間隔をクリックすると編集履歴が表示されます。この場合は単純な入力ミスです。 –

+0

@スティーブ:ありがとう。 –

答えて

88

代わりbreak;の使用continue;を含まれているコードの

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; 
    } 
} 

公式ドキュメントはhereですが、色はあまりありません。

+1

ありがとうございました。私はforeachの体の中で続けていくことだと思った。 –

+0

@Brendan - そうするためには、ループの外にある 'if'ステートメントのカスケードのように、制御ステートメントを使用しないでください。 –

14

この試してみてください。これ以上実行せずに、ループの次の反復を入力する

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

breakの代わりにcontinueを使用してください。 :-)

4

キーワードcontinueはあなたの後のことを行います。 breakforeachループから抜けるので、避けてください。

7

あなたは使用する必要があります。

continue; 
関連する問題