如何在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;
将你的嵌套循环提取到一个函数中,然后你可以使用return从任何地方跳出循环,而不是中断。
引入另一个控制标志,并将其放在所有嵌套的条件下,如下所示。 也取代了你所拥有的(真)条件
bool keepLooping = true; while (keepLooping) { // ... while (shouldCont && keepLooping) { // ... while (shouldGo && keepLooping) { // ... if (timeToStop) { keepLooping = false; break; // break out of everything? } } } }
转到只是虐待时可怕。 要退出一些嵌套的最内层循环,这是可以接受的。 但是…人们不得不问为什么那里有那么多的嵌套。
简短的回答:不。
如果你想打破整个方法,那么使用下面的代码。 如果你只想在一个方法中跳出一系列的循环,而不会抛出这个方法,那么已经发布的答案之一就可以完成这个工作。
if (TimeToStop) { return; }