Khi IReadOnlyList<T>
được giới thiệu trong .NET 4.5, trong một khoảnh khắc, tôi nghĩ rằng phần còn thiếu của câu đố cuối cùng đã được chèn vào: một cách để truyền một giao diện có thể đọc được chỉ mục thực sự mà trước đây tôi sẽ phải sử dụng giao diện chỉ đọc của riêng mình và tạo các lớp bao bọc xung quanh mọi thứ.Tại sao 'IList <T>' không thừa kế từ 'IReadOnlyList <T> `?
Tôi đã chờ đợi giao diện được đặt bên trong hệ thống phân cấp "tự nhiên", mà lý tưởng sẽ là:
IEnumerable<T>
.GetEnumerator()
-> IReadOnlyCollection<T> : IEnumerable<T>
.Count
-> IReadOnlyList<T> : IReadOnlyCollection<T>
.Item[...]
-> IList<T> : IReadOnlyList<T>
.Add(...)
.Clear()
.Contains(...)
(etc)
Nhưng, khi nó quay ra, IList<T>
không kế thừa từ IReadOnlyList<T>
.
Có lý do nào cho điều này không?
Như bạn đã nói 'IReadonlyList' đã được giới thiệu trong .NET4.5 mà sau này' IList' được thêm vào .Net. – HimBromBeere
Kiểm tra điều này: https://social.msdn.microsoft.com/Forums/vstudio/en-US/b4fb991a-3f5c-4923-93d4-7cd5c004f859/new-interfaces-ireadonlylist-and-ireadonlydictionary?forum=netfxbcl –
'Danh sách <> 'thực hiện' IList <> 'nhưng nó không chỉ đọc, vậy tại sao nó nên thực hiện' IReadOnlyList <> '?. –