SORU
3 EYLÜL 2008, ÇARŞAMBA


Bir liste varsa kontrol ETMENİZ ile boş

Bu ne "" (hesaba hız ve okunabilirlik hem alma) yolu eğer bir liste boş olup olmadığını belirlemek için? en iyi Liste türü IEnumerable<T> ve Sayısı özelliği yok bile.

Şimdi bu arasında kadar savurma buradayım:

if (myList.Count() == 0) { ... }

ve bu:

if (!myList.Any()) { ... }

Benim tahminim ikinci seçenek daha hızlı, beri geri gelir bir sonucu olarak gördüğü ilk madde, oysa ikinci seçenek (bir IEnumerable) ihtiyacımız ziyaret her öğe için geri sayım.

Bu söyleniyor, ikinci seçenek olarak okunabilir mi görünüyor? Hangisini tercih edersiniz? Yoksa boş bir liste için test etmek için daha iyi bir yol düşünebiliyor musun?

Edit@lassevk cevabı en mantıklı gibi görünüyor, bu gibi mümkünse önbelleğe sayımı kullanmak için çalışma zamanı kontrol biraz ile birleştiğinde:

public static bool IsEmpty<T>(this IEnumerable<T> list)
{
    if (list is ICollection<T>) return ((ICollection<T>)list).Count == 0;

    return !list.Any();
}

CEVAP
3 EYLÜL 2008, ÇARŞAMBA


Bunu yapmak için:

public static Boolean IsEmpty<T>(this IEnumerable<T> source)
{
    if (source == null)
        return true; // or throw an exception
    return !source.Any();
}

EditSadece kullanmayı unutmayın .Sayma yöntemi temel kaynağı aslında hızlı Sayım özelliği varsa hızlı olacak. Geçerli bir optimizasyon yukarıda birkaç temel türünü tespit eder ve sadece kullanmak olacaktır .O, bir özelliği saymak .() Herhangi bir yaklaşım, ama sonra geri dön .Eğer garantisi yapılabilir. ()

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • julioissk84life

    julioissk84l

    18 ŞUBAT 2008
  • Mismag822 - The Card Trick Teacher

    Mismag822 -

    18 EKİM 2008
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006