如何跳出C#中的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 } 
 foreach (string s in sList) { if (s.equals("ok")) return true; } return false; 

或者,如果您在find该项目后还需要做其他一些事情:

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

使用break; 这将退出foreach循环

你可以通过采用LINQ路线避免显式循环:

 sList.Any(s => s.Equals("ok")) 
 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语句显然会终止整个函数。 从你的问题来看,你可能想要使用返回true; 声明。

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

怎么样:

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

这应该做的伎俩,如果你想要做的是检查“确定”,并返回答案…

使用'break'语句。 我觉得你的问题的答案字面上是在你的问题的幽默! 顺便说一下,一个简单的谷歌search可以给你答案。

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

要么直接退出循环:

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

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

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