Bir liste varsa kontrol ETMENİZ ile boş | Netgez.com
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

  • Djbasilio AuToBaSs

    Djbasilio Au

    20 Aralık 2008
  • DragsterMC Gaming

    DragsterMC G

    30 HAZÄ°RAN 2013
  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013