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

时间:2011-06-28 16:35:14

标签: c# .net foreach

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

例如:

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

11 个答案:

答案 0 :(得分:185)

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

return false;

或者,如果您在找到该项目后需要做其他事情:

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

// do stuff

return found;

答案 1 :(得分:76)

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

答案 2 :(得分:52)

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

sList.Any(s => s.Equals("ok"))

答案 3 :(得分:27)

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.
}

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

答案 4 :(得分:7)

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

答案 5 :(得分:4)

使用'break'语句。我觉得很幽默的是你问题的答案就在你的问题中!顺便说一句,一个简单的谷歌搜索可以给你答案。

答案 6 :(得分:3)

怎么样:

return(sList.Contains("ok"));

如果您想要做的话,应该这样做 检查“确定”并返回答案......

答案 7 :(得分:2)

这不是你问题的直接答案,但有一种更简单的方法可以做你想要的。如果您使用的是.NET 3.5或更高版本,至少。它被称为Enumerable.Contains

bool found = sList.Contains("ok");

答案 8 :(得分:1)

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

答案 9 :(得分:1)

直接退出循环:

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

// if you haven't returned by now, no items are "ok"
return false;

或使用break

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

if(isOk)
{
    // do something
}

但是,在你的情况下,做这样的事情可能会更好:

if(sList.Contains("ok"))
{
    // at least one element is "ok"
}
else
{
   // no elements are "ok"
}

答案 10 :(得分:-1)

var ind=0;
foreach(string s in sList){
    if(s.equals("ok")){
        return true;
    }
    ind++;
}
if (ind==sList.length){
    return false;
}