Xaq*_*ron 9 c# break nested-loops
可能重复:
突破嵌套循环
如何从特定级别的嵌套循环中退出.例如:
foreach (item in Items)
{
foreach (item2 in Items2)
{
// Break; => we just exit the inner loop
// while we need to break both loops.
}
}
Run Code Online (Sandbox Code Playgroud)
如果有更多的嵌套循环,我们想从内部退出第N个循环.像break(2)上面的例子那样打破了两个循环.
csa*_*ano 21
我能想到的两个选择:
(1)在分解之前在第二个循环内设置一个标志.如果设置了标志,则遵循内部迭代,使条件突破第一次迭代.
bool flag = false;
foreach (item in Items)
{
foreach (item2 in Items2)
{
flag = true; // whenever you want to break
break;
}
if (flag) break;
}
Run Code Online (Sandbox Code Playgroud)
(2)使用goto语句.
foreach (item in Items)
{
foreach (item2 in Items2)
{
goto GetMeOutOfHere: // when you want to break out of both
}
}
GetMeOutOfHere:
// do whatever.
Run Code Online (Sandbox Code Playgroud)
总是有可怕的(并且受到很多诽谤?)转到......
编辑:经过一段时间的思考,我发现你可以使用Linq来做到这一点,假设有一些条件得到满足.
var query = from item in items
from item2 in items2
select new { item, item2 };
foreach (var tuple in query)
{
//...
break;
}
Run Code Online (Sandbox Code Playgroud)
不过,你可以在F#中更优雅地完成这项工作.