我试图弄清楚为什么该IDictioary<TKey, TValue>.Values
属性是 typeICollection<TValue>
而不是IEnumerable<TValue>
. 该Values
属性的 .NET 实现显式地实现了接口属性,然后将该Values
属性公开为类型Dictionary<TKey, TValue>.ValueCollection
,当您尝试从中添加或删除值时,该类型会引发异常。
这似乎是一个完整的黑客。由于字典的性质,创建一个允许您获取字典中值的集合并从中添加/删除值的实现是否有意义?