Новые интерфейсы только для чтения в .NET 4.5, такие как IReadOnlyCollection<T> и IReadOnlyDictionary<TKey,TValue>, особенно потому, что они были реализованы в общих типах BCL, таких как Collection<T>, List<T> и Dictionary<TKey,TValue>.
Однако HashSet<T> и SortedSet<T> не были обновлены для реализации IReadOnlyCollection<T>, и я не вижу логики этого решения, так как эти классы соответствуют интерфейсу без каких-либо изменений или изменений. Было ли это просто упущено командой BCL, или там что-то мне не хватает?
(Это особенно раздражает, так как нет встроенных способов обернуть набор внутри IReadOnlyCollection<T>. Действительно, ReadOnlyCollection<T> wraps IList<T>, а не ICollection<T>. Я знаю, что писать свою собственную оболочку тривиально. )