Dlaczego HashSet <T> nie implementuje IReadOnlyCollection <T>?
Właśnie odkryłem, że .NET Fx ma teraz 3 użyteczne interfejsy:
IReadOnlyCollection<T>
IReadOnlyList<T>
IReadOnlyDictionary<K,V>
I jestem trochę zdezorientowany, dlaczegoHashSet<T>
nie wdrażajIReadOnlyCollection<T>
? Czy są jakieś powody, albo Microsoft po prostu zapomniał o zestawach?
UPD
Po dwóch godzinach googlingu odkryłem, że istnieje wiele kolekcji w BCL, które mają.Count
nieruchomość, ale nie wdrażajIReadOnlyCollection<T>
berło.
UPD2
Znalazłem ten posthttp://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/b4fb991a-3f5c-4923-93d4-7cd5c004f859 i odpowiedź przezImmo Landwerth gdzie powiedział po
Czy inne kolekcje oprócz listy <> i słownika <> zostaną zaktualizowane, aby obsługiwały te interfejsy?
Absolutnie. W rzeczywistości wszystkie nasze wbudowane typy kolekcji implementują już IReadOnlyList <> i IReadOnlyDictionary <>. Oznacza to, że możesz bezpośrednio przekazać instancję List, T [] lub Dictionary <> do API, które ma wersję IReadOnly.