2010-08-06 25 views

cevap

16

Üzerinde yinelediğinizde değer üretmeyen geçerli bir IEnumerable.

Sadece şunu düşünün: IEnumerable jeneratörü bir değişkende saklayabilirsiniz - kod aslında sadece sonuçlarda yinelediğinizde çalıştırılır. null'un olması durumunda kodu nasıl uygulayabilirsiniz? Ya da 'un'u nasıl bildiğine göre, işlev çalışmadan hiçbir şey vermez.

8

İkincisi - ne olursa olsun, GetEnumerator() mümkün olacak, saymak için herhangi bir öğe olmayacak. Bu Enumerable.Empty<T>'a eşdeğerdir.() Gelip System.Linq.Enumerable.Empty önce

public static IEnumerable<T> EmptyEnum<T>() 
{ 
    yield break; 
} 

:

1

Nitekim numaralandırma ağır kullanımı doğru eğildim 2.0 kodlayıcılar kendi araç setlerinde standart bir parçası olurdu. Bir çok durumda oldukça faydalıdır, çoğu zaman tam olarak nihayetinde geri dönmez. Örneğin, GetIntEnum(), bir tür IEnumerable türünü döndürebilir, ancak null de döndürebilirse, GetIntEnum() ?? Enumerable.Empty<T>() bize her zaman saymak için güvenli olan bir şey verir (null sonuçlarında istenen behude olduğu varsayılarak).

İlgili konular