如何跳出C#中的foreach循环?

Ste*_*ack 117 .net c# foreach

foreach如果其中一个元素符合要求,我如何在C#中打破循环?

例如:

foreach(string s in sList){
      if(s.equals("ok")){
       //jump foreach loop and return true
     }
    //no item equals to "ok" then return false
}
Run Code Online (Sandbox Code Playgroud)

mbi*_*ard 207

foreach (string s in sList)
{
    if (s.equals("ok"))
        return true;
}

return false;
Run Code Online (Sandbox Code Playgroud)

或者,如果您在找到物品后需要做其他事情:

bool found = false;
foreach (string s in sList)
{
    if (s.equals("ok"))
    {
        found = true;
        break; // get out of the loop
    }
}

// do stuff

return found;
Run Code Online (Sandbox Code Playgroud)

  • 我建议将第二个例子更好地重写为`bool found = callFunctionInFirstCodeSnipper(list); //做东西 (6认同)

Fra*_*ert 78

使用break;,这将退出foreach循环


spe*_*der 55

您可以通过LINQ路由避免显式循环:

sList.Any(s => s.Equals("ok"))
Run Code Online (Sandbox Code Playgroud)

  • 或者只使用`Contains("ok")`. (22认同)
  • @Graham Clark:`Contains`假设你正在迭代`ICollection <T>`.`Any`可以处理任何类型为`IEnumerable <T>`的东西,在这种情况下,问题没有明确指出它迭代的是什么类型的集合(尽管`List`是一个非常公平的猜测). (6认同)

Cod*_*ody 29

foreach (var item in listOfItems) {
  if (condition_is_met)
    // Any processing you may need to complete here...
    break; // return true; also works if you're looking to
           // completely exit this function.
}
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.break语句只会结束循环的执行,而return语句显然会终止整个函数.从你的问题来看,你可能想要使用return true; 声明.


小智 7

您可以使用break哪个跳出最近的封闭循环,或者您可以直接跳转return true


dyn*_*ael 5

使用“ break”语句。我很幽默,您的问题的答案就在您的问题中!顺便说一句,简单的Google搜索可以为您提供答案。

  • 这是第一个谷歌搜索结果:) (7认同)