如何在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; }