Я угадал его, потому что, в то время как HashSet реализует ICollection, IsReadOnly не имеет никакого значения для HashSet. Фактически, если вы его отражаете, свойство всегда возвращает false. Реализация этого явно скрывает этот метод от открытого интерфейса.
Другая причина в том, что интерфейс ICollection может быть реализован из-за непредвиденных причин (например, для поддержки сериализации xaml), а не потому, что он необходим для первичного использования класса. Таким образом, реализация этого явно может привести к тому, что загромождение будет нарушено из интерфейса класса.
Ах, да, это имеет смысл. HashSet также скрывает IsReadOnly по той же причине, которую я предполагаю, поэтому ошибка компиляции, если вы пытаетесь ее использовать. –
BTW, вам не нужно реализовывать ICollection для сериализации xaml; коллекции должны реализовывать IDictionary или IList. Это был пример случаев, когда вам, возможно, понадобится интерфейс для случайных причин. – Will