Khuôn khổ .NET đang thêm giao diện ISet<T>
với bản phát hành 4.0. Trong cùng một phiên bản, F # đang được thêm vào như là một ngôn ngữ hạng nhất. F # cung cấp lớp Set<'T>
không thay đổi.Tại sao F # Set không triển khai ISet <T>?
Có vẻ hợp lý với tôi rằng bộ không thay đổi được cung cấp sẽ thực hiện giao diện ISet<T>
, nhưng không. Có ai biết tại sao không?
Tôi đoán là họ không muốn triển khai giao diện có thể thay đổi được, nhưng tôi không nghĩ rằng giải thích này được duy trì. Rốt cuộc, lớp học Map<'Key, 'Value>
của họ thực hiện IDictionary
, điều này có thể thay đổi. Và có những ví dụ ở nơi khác trong khuôn khổ các lớp thực hiện các giao diện chỉ thích hợp một phần.
suy nghĩ khác của tôi là ISet<T>
là mới, vì vậy có thể họ không có được xung quanh với nó. Nhưng điều đó có vẻ khá mỏng.
Thực tế là ISet<T>
là chung chung (v. IDictionary
, không phải là) có liên quan gì đến nó?
Bất kỳ suy nghĩ nào về vấn đề này sẽ được đánh giá cao.
Trong chính khuôn khổ .NET, 'ReadOnlyCollection' triển khai 'ICollection ', là một giao diện có thể thay đổi. –
Steven
@Steven Đúng, đó là một ví dụ về một lớp khung công tác thực hiện một giao diện không hoàn toàn phù hợp. –