Выход из цикла foreach в C # - PullRequest
69 голосов
/ 19 января 2009
foreach (var name in parent.names)
{
    if name.lastname == null)
    {
        Violated = true;
        this.message = "lastname reqd";
    }

    if (!Violated)
    {
        Violated = !(name.firstname == null) ? false : true;
        if (ruleViolated)
            this.message = "firstname reqd";
    }
}

Каждый раз, когда нарушается, я хочу немедленно выйти из цикла foreach Как мне это сделать?

Ответы [ 5 ]

177 голосов
/ 19 января 2009

Использование break;


EDIT:

Не связанный с вашим вопросом, я вижу в вашем коде строку:

Violated = !(name.firstname == null) ? false : true;

В этой строке вы берете логическое значение (name.firstname == null). Затем вы применяете к нему оператор !. Затем, если значение равно true, вы устанавливаете Violated в false; в противном случае к истине. Таким образом, для Violated устанавливается то же значение, что и для исходного выражения (name.firstname == null). Почему бы не использовать это, как в:

Violated = (name.firstname == null);
68 голосов
/ 19 января 2009

Просто используйте утверждение:

break;
24 голосов
/ 19 января 2009

Используйте ключевое слово break.

5 голосов
/ 07 июня 2016

Посмотрите на этот код, он может помочь вам быстро выйти из цикла!

foreach (var name in parent.names)
{
   if (name.lastname == null)
   {
      Violated = true;
      this.message = "lastname reqd";
      break;
   }
   else if (name.firstname == null)
   {
      Violated = true;
      this.message = "firstname reqd";
      break;
   }
}
0 голосов
/ 22 июня 2017

Во время тестирования я обнаружил, что цикл foreach после разрыва идет в цикл beging, а не вне цикла. Поэтому я изменил foreach на for и break в этом случае работают правильно - после прерывания поток программы выходит из цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...