gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:40:24 24 4
gpt4 key购买 nike

我试图弄清楚为什么 IDictioary<TKey, TValue>.Values属性的类型为ICollection<TValue>IEnumerable<TValue> 相反。 Values 的 .NET 实现property 显式实现接口(interface)属性,然后公开 Values属性类型 Dictionary<TKey, TValue>.ValueCollection当您尝试向其中添加或删除值时,它会引发异常。

这看起来像是一个彻底的黑客攻击。由于字典的性质,创建一个允许您获取字典中值的集合并从中添加/删除值的实现是否有意义?

最佳答案

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

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

关于c# - 为什么 `IDictionary.Values` 属性的类型为 `ICollection` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com