`foreach` ループの反復をスキップするにはどうすればいいですか? 質問する

`foreach` ループの反復をスキップするにはどうすればいいですか? 質問する

Perl では、コマンドを使用して foreach (または任意のループ) の反復をスキップできますnext;

C# で反復をスキップして次のループにジャンプする方法はありますか?

 foreach (int number in numbers)
 {
     if (number < 0)
     {
         // What goes here to skip over the loop?
     }

     // otherwise process number
 }

ベストアンサー1

あなたが望むこと:

foreach (int number in numbers) //   <--- go back to here --------+
{                               //                                |
    if (number < 0)             //                                |
    {                           //                                |
        continue;   // Skip the remainder of this iteration. -----+
    }

    // do work
}

詳細はこちらcontinueキーワード


更新:コメント欄でのブライアンの追加の質問に回答します:

ネストされた for ループがあり、拡張されたループの 1 つの反復をスキップしたい場合はどうすればよいか、さらに詳しく説明していただけますか?

for (int[] numbers in numberarrays) {
  for (int number in numbers) { // What to do if I want to
                                // jump the (numbers/numberarrays)?
  }
}

Aはcontinue常に最も近い囲みスコープに適用されるため、最も外側のループから抜け出すために使用することはできません。そのような状況が発生した場合、break内側のループからcontinue外側のループまでなど、正確に何を望んでいるかに応じて、より複雑な操作を行う必要があります。breakキーワードC break# キーワードは Perllastキーワードに似ています。

また、Dustin の提案に従って、事前に処理したくない値をフィルタリングすることも検討してください。

foreach (var basket in baskets.Where(b => b.IsOpen())) {
  foreach (var fruit in basket.Where(f => f.IsTasty())) {
    cuteAnimal.Eat(fruit); // Om nom nom. You don't need to break/continue
                           // since all the fruits that reach this point are
                           // in available baskets and tasty.
  }
}

おすすめ記事