SORU
20 Kasım 2008, PERŞEMBE


Hangi yöntemin daha iyi gerçekleştirir: .() Herhangi bir maçı .() Sayımı ve; 0?gt

System.Linq ad, şimdi bizim IEnumerableAny() Count() var . uzatabiliriz ^em>uzatma yöntemleri.

Bana yakın olan varsa kontrol etmek istiyorum bir koleksiyonu içerir 1 veya daha fazla öğe içinde, almalıyım .Any() uzatma yöntemi yerine .Count() > 0 uzatma yöntemi çünkü .Count() uzatma yöntemi vardır bunlar aracılığıyla tüm öğeleri.

İkinci olarak, bazı koleksiyonları varözellik(uzantısı yöntemi) Count Length. Bu, yerine .Any() .Count() kullanmak daha mı iyi olur ?

Evet / nae ?

CEVAP
20 Kasım 2008, PERŞEMBE


Eğer ile başlayan bir şey var .Length .Count (gibi ICollection<T>, IList<T>, List<T>, vb.) - sonra da bu olacak en hızlı seçenek, o zaman gerek yok öbür tarafına geçmek GetEnumerator()/MoveNext()/Dispose() sıra gerekli Any() kontrol için boş olmayan IEnumerable<T> sıra.

Sadece IEnumerable<T> Any()genelliklesadece bir yineleme bakmak gibi hızlı ol. Ancak, Count() SERİ-Nesneleri uygulama Not: Eğer veri kaynağı altında yatan ise çok ICollection<T> (bir optimizasyon olarak .Count kullanarak yapardoğrudanliste/bir koleksiyon, çok büyük bir fark olmayacak. Genel olmayan ICollection... ... kullanımı yok neden diye sorma

Eğer vb filtresi bu SERİ kullandıysanız elbette, (Where vb), yineleyici blokluk bir sıra tabanlı olacak, ve ICollection<T> yani bu optimizasyon bir işe yaramaz.

IEnumerable<T> genel olarak: Any() ;-p ile sopa

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DragsterMC Gaming

    DragsterMC G

    30 HAZİRAN 2013
  • MatheusDosGames

    MatheusDosGa

    28 Aralık 2011
  • Simon Hayter

    Simon Hayter

    20 HAZİRAN 2010