如何跳出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; }