Bu eski bir soru olabilir: Neden IEnumerable<T>
IEnumerable
'dan mi?Neden IEnumerable <T> IEnumerable öğesinden devralınır?
.NET'in işi budur, ancak biraz sorun çıkarır. Bir sınıf yazdığım her zaman IEumerable<T>
, iki GetEnumerator()
işlevini, IEnumerable<T>
için ve diğeri IEnumerable
için yazmam gerekiyor.
Ve IList<T>
, IList'ten devralmaz.
Neden IEnumerable<T>
başka şekilde tasarlandığını bilmiyorum.
Bu ilginç ... Gerçekten IList 'IList'i devralmadığı için IList ', ama varyansı hesaba katarsak, mantıklı olmaya başlar ... –
Çok kötü Microsoft asla tanımlanamadı IReadableByIndex ve IReadableByIndex IList ve IList (Of T) tarafından kaleme alınmış olabilir. IReadableByIndex, zorlanmadan IReadableByIndex (Of T) tarafından kalıtılabilir ve salt okunur dizinlenebilir koleksiyonların varyansı çok güzel olurdu. – supercat
@supercat Microsoft, namazınızı duymuş olabilir, çünkü bu yorumu yazdığınızdan beri, ['IReadOnlyList'] (http://msdn.microsoft.com/en-us/library/hh192385.aspx) 'yi tanıttılar. 'out'' T'de kovaryansı gösterir. –