3

重複の可能性:
拡張されたスコープで続行して中断する

私には1つの問題があります。foreach 内の "for" に対して continue を呼び出す方法がわかりません。

コード:

for(int i = 0; i < ...; i++)
{
  foreach(´´ .. in ´´)
  {
    if(,,.Value == null)
      // A!
  }
}

そして、「A!」を置き換える必要があります。for code 続きは「for」!foreach ではありません。基本的な続行を使用しましたが、foreach でのみ機能します。

解決済み:

for(int i = 0; i < ...; i++)
{
  bool Ab = false;

  foreach(´´ .. in ´´)
  {
    if(,,.Value == null)
      Ab = true;
  }

  if(Ab)
    continue;
}
4

4 に答える 4

3

内側のループを停止し、外側のループを続行する必要がある場合は、内側のループに break ステートメントが必要です。

for(int i = 0; i < ...; i++)
{   
    foreach(var thing in something)   
    {     
        if(thing.Value == null)       
        {
            break; 
        } 
    }

}

于 2012-07-25T16:57:24.447 に答える
1

それが実際のコード構造である場合はbreak、現在の反復が終了したためforeachforすぐに次の反復に進むことができます。

forただし、ループの完了後に繰り返しにさらにコードがある場合は、(母親、子供の耳を保護してください) a を使用して現在のループの最後までスキップしたいというまれなforeachケースの 1 つになる可能性があります。反復。gotofor

ただし、よりクリーンな方法はbreak、内部ループの acontinueが外部ループの a になるように、外部ループの最後に発生するように内部ループを作成することです。

于 2012-07-25T16:57:26.833 に答える
0

Continue派手な後藤です。代わりに、ここで再帰を利用できます。

于 2012-07-25T17:02:04.410 に答える
0

break内側のforeachループだけではいけませんか?

for (int i = 0; i < blah; i++) {
  foreach (var item in collection) {
    if (ShouldContinue(item)) {
      break;
    }
    // other stuff
  }
  // don't put things here
}

私が書いたコードが必要don't put things hereな場合は、内部ループを関数でラップすると、おそらくはるかに明確になります。

bool ProcessOrContinue(IEnumerable collection) {
  foreach (var item in collection) {
    if (ShouldContinue(item)) {
      return true;
    }
    // other stuff
  }
  return false;
}

for (int i = 0; i < blah; i++) {
  if (ProcessOrContinue(collection)) continue;
  // more things
}
于 2012-07-25T16:56:52.883 に答える