101 votes

Comment sortir d'une boucle foreach en C# ?

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

Chaque fois que violé est vrai, je veux sortir de la foreach boucle immédiatement. Comment dois-je m'y prendre ?

227voto

configurator Points 15594

Utilisez break .


Sans rapport avec votre question, je vois dans votre code la ligne :

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

Dans cette ligne, vous prenez une valeur booléenne (name.firstname == null) . Ensuite, vous appliquez le ! l'opérateur. Ensuite, si la valeur est vraie, vous attribuez à Violated la valeur false, sinon la valeur true. En fait, Violated prend la même valeur que l'expression originale. (name.firstname == null) . Pourquoi ne pas l'utiliser, comme dans :

Violated = (name.firstname == null);

136voto

Greg Beech Points 55270

Utilisez simplement la déclaration :

break;

41voto

Samuel Points 21085

Utilisez le break mot-clé.

17voto

Marcelo Lujan Points 1792

Regardez ce code, il peut vous aider à sortir de la boucle rapidement !

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

0voto

Sharunas Bielskis Points 478

Pendant les tests, j'ai constaté que la boucle foreach après la pause va au début de la boucle et non en dehors de la boucle. J'ai donc changé foreach en for et break dans ce cas fonctionne correctement - après break le programme sort de la boucle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X