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

  • DanceOn

    DanceOn

    6 Mayıs 2006
  • Santozz Yazz

    Santozz Yazz

    23 Mart 2014
  • Whizzpopping

    Whizzpopping

    10 Kasım 2005