我有一个问题。我不知道如何在foreach内部继续“for”。
代码:
for(int i = 0; i < ...; i++)
{
foreach(´´ .. in ´´)
{
if(,,.Value == null)
// A!
}
}
我需要更换“A!”代码继续“for”!不是foreach。我使用了基本的继续,但它只适用于foreach。
解决 用:
for(int i = 0; i < ...; i++)
{
bool Ab = false;
foreach(´´ .. in ´´)
{
if(,,.Value == null)
Ab = true;
}
if(Ab)
continue;
}
答案 0 :(得分:3)
如果你需要停止内循环,并继续外循环,你只需要在内循环中使用break语句
for(int i = 0; i < ...; i++)
{
foreach(var thing in something)
{
if(thing.Value == null)
{
break;
}
}
}
答案 1 :(得分:1)
如果这是您的实际代码结构,您break
foreach
for
将立即继续下一次迭代,因为当前的结束了。
但是,如果在for
循环完成后foreach
次迭代中有更多代码,则可能属于罕见案例中的一个(母亲) ,保护孩子的耳朵)可能想要使用goto
跳到当前for
次迭代的结尾。
然而,更简洁的方法是设计内部循环,使其出现在外循环的末尾,这样内部循环中的break
就是外部continue
循环。
答案 2 :(得分:0)
你不能只break
内部foreach
循环吗?
for (int i = 0; i < blah; i++) {
foreach (var item in collection) {
if (ShouldContinue(item)) {
break;
}
// other stuff
}
// don't put things here
}
如果您需要放置don't put things here
的代码,如果将内循环包装在函数中,则可能会更清楚:
bool ProcessOrContinue(IEnumerable collection) {
foreach (var item in collection) {
if (ShouldContinue(item)) {
return true;
}
// other stuff
}
return false;
}
for (int i = 0; i < blah; i++) {
if (ProcessOrContinue(collection)) continue;
// more things
}
答案 3 :(得分:0)
Continue
是一个花哨的转到。你可以在这里使用递归。