我试图解决为什么IDictioary<TKey, TValue>.Values
属性类型为ICollection<TValue>
而不是IEnumerable<TValue>
。 Values
属性的.NET实现显式实现了接口属性,然后将Values
属性公开为类型Dictionary<TKey, TValue>.ValueCollection
,当您尝试添加或删除它时,会抛出异常。< / p>
这似乎是一个完整的黑客。由于字典的性质,创建一个允许你获取字典中的值集合并从中添加/删除值的实现是否有意义?
答案 0 :(得分:6)
这允许您在字典界面上使用Count
属性和Contains()
方法。
你是对的;这是一个丑陋的黑客
理想的解决方案是使用新的(到.Net 4.5)IReadOnlyCollection<T>
interface。