如何跳出 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
}
348115 次浏览
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;

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

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 语句将显然终止整个函数。从你的问题判断,你可能想用返回真; 陈述。

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

你可以通过使用 LINQ 路由来避免显式的循环:

sList.Any(s => s.Equals("ok"))
foreach(string s in sList)
{
if(s.equals("ok"))
{
return true;
}
}
return false;
var ind=0;
foreach(string s in sList){
if(s.equals("ok")){
return true;
}
ind++;
}
if (ind==sList.length){
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或更高版本。它叫做 数不胜数,包含

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

这个怎么样:

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

如果你想的话,这应该可以了 检查一下“ OK”,然后返回答案..。

使用“ break”语句转义循环。

这是一个古老的问题,但只是觉得我应该加上这个答案

你也可以像这样使用 While循环

string sample = "";
while(sample == "")
{
foreach(DataRow row in DataTable.Rows
sample = row["somecolumn"].ToString();
}

一旦字符串‘ sample’不再 = “”,循环将结束