如何跳出C#中的foreach循环

本文关键字:foreach 循环 中的 何跳出 | 更新日期: 2023-09-27 18:00:31

如果其中一个元素满足要求,我如何在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
}

如何跳出C#中的foreach循环

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循环

您可以通过使用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语句显然会终止整个函数。根据你的问题判断,你可能想使用return true;陈述

使用"break"语句来转义循环。

您可以使用从最近的封闭循环中跳出来的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或更高版本,至少是这样。它被称为可枚举。包含

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

这是一个老问题,但我只是想添加这个答案

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

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

一旦字符串"sample"不再="循环将结束

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