Почему HashSet <T> не реализует IReadOnlyCollection <T>?

Я только что нашел, что .NET Fx теперь имеет 3 полезных интерфейса:

И я немного смущен, почему HashSet<T> не реализует IReadOnlyCollection<T>? Есть ли какие-либо причины, или Microsoft просто забыла о наборах снова?

UPD

После двухчасовой googling я обнаружил, что в BCL есть много коллекций, у которых есть свойство .Count, но не реализует интерфейс IReadOnlyCollection<T>.

UPD2

Я нашел этот пост http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/b4fb991a-3f5c-4923-93d4-7cd5c004f859 и ответ Immo Landwerth, где он сказал следующее

Будут ли обновляться другие коллекции, кроме List < > и Dictionary < > , чтобы поддерживают эти интерфейсы?

Совершенно верно. На самом деле, все наши встроенные типы коллекций уже реализовать IReadOnlyList < > и IReadOnlyDictionary < > . Это значит, что ты может напрямую передать экземпляр List, T [] или Dictionary < > в API, который использует IReadOnly-версию.

Ответы

Ответ 1

В версии 4.5 рамки HashSet<T> не реализуется IReadOnlyCollection<out T>.

Это упущение было разрешено в версии 4.6 структуры (выпущено почти через 12 месяцев после того, как был задан вышеуказанный вопрос).

Эти исправления не ограничены HashSet<T>, другие коллекции, такие как Stack<T> и Queue<T> получили эти улучшения.

Спекуляция по причине любого упущения является спорной. Это может быть надзор или давление во времени, но, откровенно говоря, это не имеет большого значения. Я подозреваю, что даже прямой ввод от команды разработчиков Microsoft был бы несколько субъективным, даже если нам нравятся связанные анекдоты.