为什么类型为`ICollection`的`IDictionary.Values`属性?

时间:2012-10-31 19:19:25

标签: c# dictionary ienumerable icollection

我试图解决为什么IDictioary<TKey, TValue>.Values属性类型为ICollection<TValue>而不是IEnumerable<TValue>Values属性的.NET实现显式实现了接口属性,然后将Values属性公开为类型Dictionary<TKey, TValue>.ValueCollection,当您尝试添加或删除它时,会抛出异常。< / p>

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

1 个答案:

答案 0 :(得分:6)

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

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