为什么HashSet 没有实现IReadOnlyCollection ?
我刚刚发现.NET Fx现在有3个有用的接口:
IReadOnlyCollection
-
IReadOnlyList
-
IReadOnlyDictionary
我有点困惑为什么HashSet
没有实现IReadOnlyCollection
? 有什么理由,或者微软再次忘记了套装?
UPD
经过两个小时的谷歌搜索后,我发现BCL中有很多具有.Count
属性的集合,但是没有实现IReadOnlyCollection
接口。
UPD2
我发现这篇文章http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/b4fb991a-3f5c-4923-93d4-7cd5c004f859和Immo Landwerth的答案, 他已经说过以下
除了List 和Dictionary 之外的其他集合是否会更新以支持这些接口?
绝对。 实际上,我们所有的内置集合类型都已经实现了IReadOnlyList 和IReadOnlyDictionary 。 这意味着,您可以直接将List,T []或Dictionary 的实例传递给采用IReadOnly版本的API。
在框架的4.5版本中, HashSet
不实现IReadOnlyCollection
。
这个遗漏在框架的4.6版本中得到了解决(在上述问题被提出后近12个月发布)。
这些更正不仅限于HashSet
,其他集合(如Stack
和Queue
也已收到这些改进。
关于任何遗漏的原因的猜测是没有实际意义的。 这可能是疏忽或时间压力,但坦率地说,它没什么影响。 我怀疑,即使我们喜欢相关的轶事,即使微软开发团队的直接输入也会有些主观。