Đây có thể là câu hỏi cũ: Tại sao IEnumerable<T>
được kế thừa từ IEnumerable
?Tại sao IEnumerable <T> kế thừa từ IEnumerable?
Đây là cách .NET làm, nhưng nó mang lại một chút rắc rối. Mỗi khi tôi viết một lớp thực hiện IEumerable<T>
, tôi phải viết hai hàm GetEnumerator()
, một cho IEnumerable<T>
và một cho IEnumerable
.
Và, IList<T>
không được kế thừa từ IList.
Tôi không biết tại sao IEnumerable<T>
được thiết kế theo cách khác.
Thật thú vị ... Tôi đã thực sự bực mình rằng 'IList' không kế thừa 'IList', nhưng ngay sau khi bạn đưa phương sai vào tài khoản, nó bắt đầu có ý nghĩa ... –
Quá xấu Microsoft chưa bao giờ định nghĩa IReadableByIndex và IReadableByIndex (Of Out T), có thể đã được thừa kế bởi IList và IList (Of T). IReadableByIndex có thể được kế thừa bởi IReadableByIndex (Of T) mà không gặp khó khăn, và phương sai của các bộ sưu tập chỉ mục có thể đọc được sẽ rất đẹp. – supercat
@supercat Microsoft có thể đã nghe những lời cầu nguyện của bạn, bởi vì kể từ khi bạn viết nhận xét đó, họ đã giới thiệu ['IReadOnlyList '] (http://msdn.microsoft.com/en-us/library/hh192385.aspx) trong đó 'out' biểu thị hiệp phương sai trong' T'. –