Как выпрыгнуть из цикла foreach в С#?

Как выйти из цикла foreach на С#, если один из элементов соответствует требованию?

Например:

foreach(string s in sList){
      if(s.equals("ok")){
       //jump foreach loop and return true
     }
    //no item equals to "ok" then return false
}

Ответ 1

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;

Ответ 2

Используйте break;, и это приведет к выходу из цикла foreach

Ответ 3

Вы можете избежать явных циклов, используя маршрут LINQ:

sList.Any(s => s.Equals("ok"))

Ответ 4

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; утверждение.

Ответ 5

Вы можете использовать break, который выпрыгивает из ближайшего замкнутого цикла, или вы можете просто прямо return true

Ответ 6

как насчет:

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

Это должно сделать трюк, если все, что вы хотите сделать проверяет "ok" и возвращает ответ...

Ответ 7

Используйте оператор break. Я нахожу это смешным, что ответ на ваш вопрос буквально в вашем вопросе! Кстати, простой поиск Google мог дать вам ответ.

Ответ 8

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

Ответ 9

Вернитесь прямо из цикла:

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

Ответ 10

Это не прямой ответ на ваш вопрос, но есть гораздо более простой способ сделать то, что вы хотите. Если вы используете .NET 3.5 или новее, по крайней мере. Он называется Enumerable.Contains

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

Ответ 11

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