2

我试图弄清楚为什么该IDictioary<TKey, TValue>.Values属性是 typeICollection<TValue>而不是IEnumerable<TValue>. 该Values属性的 .NET 实现显式地实现了接口属性,然后将该Values属性公开为类型Dictionary<TKey, TValue>.ValueCollection,当您尝试从中添加或删除值时,该类型会引发异常。

这似乎是一个完整的黑客。由于字典的性质,创建一个允许您获取字典中值的集合并从中添加/删除值的实现是否有意义?

4

1 回答 1

6

这允许您在字典接口上使用Count属性和方法。Contains()

你是对的; 这是一个丑陋的黑客。
理想的解决方案是使用新的(到 .Net 4.5)IReadOnlyCollection<T>接口

于 2012-10-31T19:20:50.063 回答