SORU
30 Ocak 2012, PAZARTESİ


SERİ Halinde vs dosyalarda grup dosyalarda grup

Nesneler Listesi, true boolean özelliği olan nesneleri tek bir şey yapıyor yinelemek istiyorum. Bu kod arasında tartışıyorum

foreach (RouteParameter parameter in parameters.Where(p => p.Condition))
{ //do something }

ve bu kod

foreach (RouteParameter parameter in parameters)
{ 
  if !parameter.Condition
    continue;
  //do something
}

İlk kod açıkçası temiz, ama listede iki kez - bir kez sorgu için ve bir kez dosyalarda grup için döngü olacak sanırım. Bu performans, ama sadece iki kez döngü fikri hakkında çok endişeli değilim bu yüzden büyük bir liste olmayacakböceklerbeni.

Soru: temiz/güzel bir şekilde iki kez döngü olmadan bunu yazmak var mı?

CEVAP
30 Ocak 2012, PAZARTESİ


Jon Skeet bazen live-action SERİ bir demo bu nasıl çalıştığını açıklamak için yapar. Sahnede üç kişi var düşünün. Sol tarafta bir kart güverte karıştırılır eden bir adam var. Ortada sadece kırmızı kartları birlikte geçen bir adam var, ve sağda, kart isteyen bir adam var.

Sağdaki adam ortadaki adam sokuyor. Ortadaki adam soldaki adam sokuyor. Soldaki adam ortadaki adam kartı eller. Eğer siyah ise, ortadaki adam yere atar ve o da sağdaki adam için el kırmızı kartla elde edene kadar tekrar sokuyor. Sonra sağdaki adam tekrar ortaya adam sokuyor.

Bu soldaki adam kartlar bitene kadar devam eder.

Güverte bir kez daha baştan sona geçmiş değildi.Ancak, soldaki adam ve ortadaki adam hem 52 kart ele ve sağdaki adam 26 kartları işlenmiş. Kart üzerinde 52 52 26 operasyonlarda toplam vardı, amagüverte sadece bir kere döngüye.

Senin "" sürümü ve" sürüm aynı şeydir; eğer olsaydı . "devam ETMENİZ

foreach(var card in deck)
{
    if (card.IsBlack) continue;
    ... use card ...

eğer her kart kırmızı kart hareket eden siyah ve 26 operasyonları olup olmadığını görmek için test, 52 güverte işlemleri her kart getir 52 işlemler vardır. Aynen onun gibi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elliot Davin

    Elliot Davin

    28 Kasım 2008
  • HowToBasic

    HowToBasic

    8 Aralık 2011
  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013