回答:
あなたが欲しい:
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
キーワードに関するドキュメントについては、こちらをご覧ください。break
C#のキーワードは、Perlに似ていますlast
キーワード。
また、ダスティンの提案に従って、事前に処理したくない値だけを除外することを検討してください。
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.
}
}
goto
は、@ Brianが尋ねている状況に実際に役立ちます。nextArray:
外側のループの最下部などにラベルを追加してgoto nextArray;
から、スキップします。
別のアプローチは、ループが実行される前にLINQを使用してフィルタリングすることです。
foreach ( int number in numbers.Where(n => n >= 0) )
{
// process number
}
linqを使用した別のアプローチは次のとおりです。
foreach ( int number in numbers.Skip(1))
{
// process number
}
複数のアイテムの最初をスキップする場合。
または.SkipWhere
、スキップする条件を指定する場合に使用します。
continueステートメントを使用します。
foreach(object number in mycollection) {
if( number < 0 ) {
continue;
}
}