Как мне выйти из цикла foreach в C #? - PullRequest
112 голосов
/ 28 июня 2011

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

Например:

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

Ответы [ 11 ]

193 голосов
/ 28 июня 2011
foreach (string s in sList)
{
    if (s.equals("ok"))
        return true;
}

return false;

В качестве альтернативы, если вам нужно заняться другими делами после того, как вы нашли предмет:

76 голосов
/ 28 июня 2011

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

53 голосов
/ 28 июня 2011

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

sList.Any(s => s.Equals("ok"))
27 голосов
/ 28 июня 2011
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; заявление.

7 голосов
/ 28 июня 2011

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

4 голосов
/ 03 марта 2017

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

3 голосов
/ 12 августа 2016

как насчет:

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

Это должно сработать, если все, что вы хотите сделать проверить "ок" и вернуть ответ ...

2 голосов
/ 09 июля 2011

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

bool found = sList.Contains("ok");
1 голос
/ 28 июня 2011

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

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"
}
1 голос
/ 28 июня 2011
foreach(string s in sList)
{
    if(s.equals("ok"))
    {
             return true;
    }
}
return false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...