web-dev-qa-db-ja.com

C#foreachのifステートメントに基づいてリストの次の項目に移動する

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

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

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

ありがとう

54
Brendan Vogt

つかいます continue; の代わりに break;含まれるコードをそれ以上実行せずにループの次の反復に入る。

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

公式ドキュメントは ここ ですが、あまり色を追加しません。

108
Steve Townsend

これを試して:

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

以下を使用する必要があります。

continue;
8
Aamir

continueキーワードはあなたが望んでいることをします。 breakforeachループから抜けるので、それを避けたいでしょう。

4
Neil Knight

continueの代わりにbreakを使用します。 :-)

3
Enigmativity