如何在 C # 中一次打破多个循环?

如果我有嵌套的循环,并且希望一次突破所有这些循环,该怎么办?

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;
56398 次浏览

后藤只有在被虐待的时候才是可怕的。退出某些嵌套的最内层循环是可以接受的。但是... 人们不得不问为什么一开始会有这么多的巢穴。

简短的回答: 不。

将嵌套的循环提取到一个函数中,然后可以使用 return 从任何地方脱离循环,而不是中断循环。

引入另一个控制标志,并将其放入所有嵌套的条件,如下所示。还可以用它替换具有的 while (true)条件

bool keepLooping = true;
while (keepLooping) {
// ...
while (shouldCont && keepLooping) {
// ...
while (shouldGo && keepLooping) {
// ...
if (timeToStop) {
keepLooping  = false;
break; // break out of everything?
}
}
}
}

如果您想跳出整个方法,那么使用下面的代码。 如果你只想打破一个方法中的一系列循环而不想打破这个方法,那么其中一个已经公布的答案就可以做到。

if (TimeToStop)
{
return;
}

你可以使用 goto来摆脱循环:

    [...]
while (true) {
// ...
while (shouldCont) {
// ...
while (shouldGo) {
// ...
if (timeToStop) {
goto GETOUT;
}
}
}
}
GETOUT:
//move on to the next step
[...]