Je devine sa cause, alors que HashSet implémente ICollection, IsReadOnly n'a pas de sens pour HashSet. En fait, si vous le reflétez, la propriété renvoie toujours false. L'implémenter cache explicitement cette méthode de l'interface publique.
Une autre raison est que l'interface ICollection peut être implémentée pour des raisons accessoires (par exemple, pour prendre en charge la sérialisation xaml) plutôt que parce qu'elle est nécessaire à l'utilisation principale de la classe. Donc, l'implémenter explicitement peut éviter l'encombrement de l'interface de la classe.
Ah, oui, cela a du sens. HashSet cache aussi IsReadOnly pour la même raison que je suppose, d'où l'erreur de compilation si vous essayez de l'utiliser. –
BTW, vous n'avez pas besoin d'implémenter ICollection pour la sérialisation xaml; les collections doivent implémenter IDictionary ou IList. C'était juste un exemple d'occasions où vous pourriez avoir besoin d'implémenter une interface pour des raisons accidentelles. – Will