私はこの質問に少し前に出くわしました、そして私はそこから材料のいくつかを引き出しています:「break n」コンストラクトの名前はありますか?
これは、二重にネストされたforループから抜け出すようにプログラムに指示する必要がある人々にとって、不必要に複雑な方法のようです。
for (i = 0; i < 10; i++) {
bool broken = false;
for (j = 10; j > 0; j--) {
if (j == i) {
broken = true;
break;
}
}
if (broken)
break;
}
goto文は悪魔だと言うのが好きな教科書を知っています。私はそれらが好きではありませんが、これは規則の例外を正当化するのでしょうか?
nネストされたforループに対処する答えを探しています。
注:「はい」、「いいえ」、またはその中間のいずれで回答しても、完全に近い考え方の回答は歓迎されません。特に答えが「いいえ」の場合は、正当で正当な理由を提供してください(とにかくStack Exchangeの規制からそれほど遠くない)。
goto
:後藤(C#リファレンス) - 「goto文も深くネストされたループから抜け出すために便利です。」
goto
は、最初のケース内でコードを実行した後、別のケースにフォールスルーするC#スイッチで実際に必要です。ただし、これがgotoを使用した唯一のケースです。
for (j = 10; j > 0 && !broken; j--)
次のように記述できる場合は、break;
ステートメントは必要ありません。broken
外側のループが始まる前にto の宣言を移動した場合、それがそのように記述できれば、sは必要ないfor (i = 0; i < 10 && !broken; i++)
と思います。break;