我刚刚发现.NET Fx现在具有3个有用的接口(interface):
IReadOnlyCollection<T>
IReadOnlyList<T>
IReadOnlyDictionary<K,V>
我有点困惑为什么
HashSet<T>
不实现IReadOnlyCollection<T>
?有什么原因,还是微软又忘记了设置?UPD
经过两个小时的谷歌搜索,我发现BCL中有许多具有
.Count
属性但不实现IReadOnlyCollection<T>
接口(interface)的集合。UPD2
我找到了http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/b4fb991a-3f5c-4923-93d4-7cd5c004f859帖子以及Immo Landwerth的回答,他在下面说
最佳答案
在框架的版本4.5中, HashSet<T>
不实现IReadOnlyCollection<out T>
。
在框架的4.6版中解决了这一遗漏(在提出上述问题后将近12个月发布了该版本)。
这些更正为not limited to HashSet<T>
,其他集合(例如 Stack<T>
和 Queue<T>
)也得到了这些改进。
关于任何遗漏原因的猜测尚无定论。可能是疏忽或时间压力,但坦率地说,这无关紧要。我怀疑即使我们喜欢相关轶事,即使Microsoft开发团队的直接投入也会有些主观。