我刚刚发现.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开发团队的直接投入也会有些主观。

    10-06 09:02