Jak wyjść z pętli foreach w C #?


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

Zawsze, gdy naruszenie jest prawdą, chcę natychmiast wyjść z foreachpętli. Jak mam to zrobić?

Odpowiedzi:


208

Użyj break.


Bez związku z twoim pytaniem, widzę w twoim kodzie wiersz:

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

W tym wierszu bierzesz wartość logiczną (name.firstname == null). Następnie stosujesz !do niego operator. Następnie, jeśli wartość jest true, ustaw Violed na false; inaczej do prawdy. Zasadniczo więc Naruszone ma taką samą wartość, jak oryginalne wyrażenie (name.firstname == null). Dlaczego nie użyć tego, jak w:

Violated = (name.firstname == null);

Nie lubię patrzeć na niepotrzebne testy i negacje.
John Grabauskas



9

Spójrz na ten kod, może pomóc ci szybko wyjść z pętli!

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.