如果在 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;
如果您需要在找到该项后执行其他操作:
bool found = false;
foreach (string s in sList)
{
if (s.equals("ok"))
{
found = true;
break; // get out of the loop
}
}
// do stuff
return found;
bool found = callFunctionInFirstCodeSnipper(list); // do stuff
。 - ICR使用break;
语句,可以退出foreach循环
你可以通过使用LINQ来避免显式循环:
sList.Any(s => s.Equals("ok"))
Contains("ok")
。 - Graham Clarkforeach (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;语句。
break
来跳出最近的循环,或者直接使用 return true
。return(sList.Contains("ok"));
如果你只想检查是否为“ok”并返回答案,那么这应该足够了...
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"
}
这不是对你问题的直接回答,但有一个更简单的方法可以实现你想要的功能。如果你使用的是 .NET 3.5 或更高版本,那么就可以使用 Enumerable.Contains 方法。
bool found = sList.Contains("ok");
return "ok" in sList:
- 那么在C#中有没有类似的东西呢? - Tim Pietzcker