SORU
17 Mart 2009, Salı


Nasıl bir `foreach` döngü tekrarında atlayabilirim?

Perl next; bir komut ile (veya herhangi bir döngü) dosyalarda grup için bir yineleme atlayabilirim.

Orada bir yineleme üzerine atlayın ve C Bir sonraki döngü atlamak için bir yoldur#?

 foreach (int number in numbers)
 {
     if (number < 0)
     {
         // What goes here to skip over the loop?
     }

     // otherwise process number
 }

CEVAP
17 Mart 2009, Salı


İstediğiniz:

foreach (int number in numbers) //   <--- go back to here -------- 
{                               //                                |
    if (number < 0)             //                                |
    {                           //                                |
        continue;   // Skip the remainder of this iteration. ----- 
    }

    // do work
}

İşte continue keyword hakkında daha fazla.

Güncelleme:Brian yanıt olarak takip yorumlarda soru:

Daha fazla iç içe for döngüsü vardı, ve daha uzun olanlardan yineleme atlamak istese yapardım neler olduğunu açıklayabilir misiniz?

for (int[] numbers in numberarrays) {
  for (int number in numbers) { // What to do if I want to
                                // jump the (numbers/numberarrays)?
  }
}

continue her zaman en yakın kapsayan kapsamı için de geçerlidir, yani en dıştaki çemberin dışında kırmak için kullanabilirsiniz olamazdı. Eğer böyle bir durum ortaya çıkarsa, bir şey daha karmaşık ne istediğini tam olarak, iç döngü break gibi bağlı olarak, dış döngü continue o zaman ihtiyacınız olur. break keyword ilgili belgeleri görmek için buraya tıklayınız. break C# anahtar kelime last Perl anahtar kelime benzer.

Ayrıca, Dustin sadece önceden işlemek istemiyorsun değerleri filtrelemek için öneri alarak düşünün:

foreach (var basket in baskets.Where(b => b.IsOpen())) {
  foreach (var fruit in basket.Where(f => f.IsTasty())) {
    cuteAnimal.Eat(fruit); // Om nom nom. You don't need to break/continue
                           // since all the fruits that reach this point are
                           // in available baskets and tasty.
  }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hallucination Land

    Hallucinatio

    14 Ocak 2011
  • Hollyscoop

    Hollyscoop

    30 Ocak 2007
  • RiceBunny

    RiceBunny

    16 ŞUBAT 2006