Como faço para sair de um loop foreach em C #?


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

Sempre que violado for verdadeiro, quero sair do foreachloop imediatamente. Como eu faço isso?

Respostas:


212

Use break.


Não relacionado à sua pergunta, vejo em seu código a linha:

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

Nesta linha, você obtém um valor booleano (name.firstname == null). Então, você aplica o !operador a ele. Então, se o valor for verdadeiro, você define Violado como falso; caso contrário, para verdadeiro. Então, basicamente, Violated é definido com o mesmo valor da expressão original (name.firstname == null). Por que não usar isso, como em:

Violated = (name.firstname == null);

Não gosto de ver testes desnecessários e negações.
John Grabauskas



10

Veja este código, ele pode ajudá-lo a sair do loop rapidamente!

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.