C # 'da bir foreach döngüsünden nasıl çıkırım?


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

İhlal doğru olduğunda, foreachderhal döngüden çıkmak istiyorum . Nasıl yaparım?

Yanıtlar:


212

Kullanın break.


Sorunuzla alakasız olarak, kodunuzda şu satırı görüyorum:

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

Bu satırda bir boole değeri alırsınız (name.firstname == null). Ardından !operatörü ona uygularsınız . Ardından, değer true ise, Violated'yi false olarak ayarlarsınız; aksi takdirde true. Yani temelde Violated, orijinal ifadeyle aynı değere ayarlanır (name.firstname == null). Neden onu şu şekilde kullanmıyorsunuz:

Violated = (name.firstname == null);

Testler ve olumsuzlukların gereksiz olduğunu görmekten hoşlanmıyorum.
John Grabauskas



10

Bu koda bakın, bu döngüden hızlı bir şekilde çıkmanıza yardımcı olabilir!

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.