首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中重新启动一个foreach循环?

在C#中重新启动一个foreach循环?
EN

Stack Overflow用户
提问于 2011-01-01 20:53:04
回答 2查看 19.1K关注 0票数 21

如何在C#中重新启动foreach循环??

例如:

代码语言:javascript
复制
Action a;
foreach(Constrain c in Constrains)
{
   if(!c.Allows(a))
   {
      a.Change();
      restart;
   }
}

这里的restart类似于continuebreak,但它从头开始重新启动了foreach,这就像将for循环的计数器再次设置为0。

这在C#中是可能的吗?

编辑:我要感谢Mehrdad和Mahesh Velaga,他们让我在当前的实现中发现了一个bug (index=0),否则就不会发现它。

EN

回答 2

Stack Overflow用户

发布于 2011-01-01 21:04:04

代码语言:javascript
复制
void Main()
{
    IEnumerable<Constrain> cons;
    SomeObject a;

    while(!TryChangeList(cons, a)) { }
}

// the name tryChangeList reveals the intent that the list will be changed
private bool TryChangeList(IEnumerable<Constrain> constrains, SomeObject a)
{
    foreach(var con in constrains)
    {
        if(!c.Allows(a))
        {
            a.Change();
            return false;
        }
    }
    return true;
}
票数 4
EN

Stack Overflow用户

发布于 2011-01-01 21:09:13

代码语言:javascript
复制
for (var en = Constrains.GetEnumerator(); en.MoveNext(); )
{
    var c = en.Current;
    if (!c.Allows(a))
    {
        a.Change();
        en = Constrains.GetEnumerator();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4574102

复制
相关文章

相似问题

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