ネストされたループがあり、それらすべてを一度にブレークアウトしたい場合はどうなりますか?
while (true) {
// ...
while (shouldCont) {
// ...
while (shouldGo) {
// ...
if (timeToStop) {
break; // Break out of everything?
}
}
}
}
PHPでは、break
は、抜けるループの数の引数を取ります。このようなことはC#でできますか?
goto
のような恐ろしいものはどうですか?
// In the innermost loop
goto BREAK
// ...
BREAK: break; break; break;
ネストされたループを関数に抽出すると、returnを使用して、中断するのではなく、どこからでもループから抜け出すことができます。
別の制御フラグを導入し、以下のようなネストされたすべてのwhile条件に入れます。また、あなたが持っているwhile(true)条件をそれに置き換えます
bool keepLooping = true;
while (keepLooping) {
// ...
while (shouldCont && keepLooping) {
// ...
while (shouldGo && keepLooping) {
// ...
if (timeToStop) {
keepLooping = false;
break; // break out of everything?
}
}
}
}
後藤は、虐待されたときのみ恐ろしいです。いくつかのネストの最も内側のループからドロップアウトすることは受け入れられます。しかし...そもそもなぜそこに多くのネストがあるのかを問う必要があります。
短い答え:いいえ。
メソッド全体から抜け出したい場合は、以下のコードを使用します。メソッドから抜け出すことなく、メソッド内の一連のループから抜け出すだけの場合は、すでに投稿された回答の1つがその仕事をします。
if (TimeToStop)
{
return;
}