gpt4 book ai didi

c# - 为什么 HashSet.IsReadOnly 是显式的?

转载 作者:可可西里 更新时间:2023-11-01 08:19:33 25 4
gpt4 key购买 nike

这个

var h = new HashSet<int>();
var r = h.IsReadOnly;

不编译。我必须做的

var r = ((ICollection<int>)h).IsReadOnly;

为什么IsReadOnly没有正常实现?

(我不是在问如何,而是在问为什么)

最佳答案

我猜这是因为,虽然 HashSet 实现了 ICollection,但 IsReadOnly 对 HashSet 没有任何意义。事实上,如果你反射(reflect)它,该属性总是返回 false。实现它会从公共(public)接口(interface)中显式隐藏此方法。

另一个原因是因为实现 ICollection 接口(interface)可能是偶然的原因(例如,支持 xaml 序列化),而不是因为它对于类的主要用途是必需的。因此,显式实现它可以避免类接口(interface)的困惑。

关于c# - 为什么 HashSet<T>.IsReadOnly 是显式的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/743498/

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