75

ネストされたループがあり、それらすべてを一度に抜け出したい場合はどうすればよいですか?

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

4 に答える 4

91

ネストされたループを関数に抽出すると、中断するのではなく、return を使用してどこからでもループから抜け出すことができます。

于 2010-02-26T02:32:03.587 に答える
72

別の制御フラグを導入し、以下のようにネストされたすべての while 条件に入れます。また、あなたが持っているwhile(true)条件をそれに置き換えます

bool keepLooping = true;
while (keepLooping) {
    // ...
    while (shouldCont && keepLooping) {
        // ...
        while (shouldGo && keepLooping) {
            // ...
            if (timeToStop) { 
                keepLooping  = false;
                break; // break out of everything?
            }
        }  
    }
}
于 2010-02-26T03:17:51.057 に答える
29

後藤は虐待されたときだけ恐ろしいです。いくつかのネストの最も内側のループから脱落することは許容されます。しかし...そもそもなぜそこにたくさんの巣があるのか​​を尋ねなければなりません。

簡単な答え: いいえ。

于 2010-02-26T02:31:33.123 に答える
3

メソッド全体から抜け出したい場合は、以下のコードを使用してください。メソッドから抜け出すことなく、メソッド内の一連のループから抜け出したいだけの場合は、すでに投稿されている回答の1つがその役割を果たします。

if (TimeToStop)
{
   return;
}
于 2012-02-08T17:35:57.560 に答える