首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >中断内部foreach循环并继续外部foreach循环

中断内部foreach循环并继续外部foreach循环
EN

Stack Overflow用户
提问于 2011-11-17 22:17:11
回答 7查看 39.3K关注 0票数 34

如果我有一个嵌套的foreach循环,我如何中断内部循环,并告诉外部循环在该点继续,而不执行内部循环下面的任何其他代码?

代码语言:javascript
复制
foreach(var item in items)
{
  foreach(var otheritem in otheritems)
  {
    if (!double.TryParse(otheritem))
    {
      //break inner loop
      //continue outer loop so we never get to DoStuff()
    }
  }

  DoStuff();
}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-11-17 22:19:37

使用标志如何?

代码语言:javascript
复制
foreach(var item in items)
{
  bool flag = false;
  foreach(var otheritem in otheritems)
  {
    if (!double.TryParse(otheritem))
    {
        flag = true;
        break;
    }
  }
  if(flag) continue;

  DoStuff();
}
票数 45
EN

Stack Overflow用户

发布于 2011-11-17 22:31:32

代码语言:javascript
复制
foreach(var item in items)
{
  foreach(var otheritem in otheritems)
  {
    if (!double.TryParse(otheritem))
    {
      //...
      goto nextUpperLoop;
    }
  }

  DoStuff();
  nextUpperLoop: ;
}
票数 33
EN

Stack Overflow用户

发布于 2011-11-17 22:20:12

简单是最好的。

代码语言:javascript
复制
  bool doStuff = true;
  foreach(var otheritem in otheritems)
  {
    if (!double.TryParse(otheritem))
    {
        doStuff = false;
        break;
    }
  }
  if(doStuff) DoStuff();

另一种方法是重构:

代码语言:javascript
复制
foreach(var outerItem in outerLoop) {
     Foo(outerItem);
}
...
void Foo(OuterItem item) {
    foreach(var innerItem in innerLoop) {
        if(someTest) return;
    }
    DoStuff();
}

return确保DoStuff不会发生。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8168578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档