C#:微软为什么不让 ReadOnlyCollection<T> 继承自 ReadOnlyCollectionBase?

标签 c# generics collections

简单的说,微软定义了一个ReadOnlyCollectionBase , 但没有将其用作 ReadOnlyCollection<T> 的基类当听起来很明显应该是这样的时候。

我是不是漏掉了什么?我的意思是,是否有充分的理由将此类作为基类?

最佳答案

可能是因为它不是通用的并且实现了 ICollectionReadOnlyCollection<T>是通用的并实现了 ICollection<T> .注意 ICollection<T>不执行 ICollection .在那topic :

ICollection<T> seems like ICollection, but it’s actually a very different abstraction. We found that ICollection was not very useful. At the same time, we did not have an abstraction that represented an read/write non-indexed collection. ICollection<T> is such abstraction and you could say that ICollection does not have an exact corresponding peer in the generic world; IEnumerable<T> is the closest.

来自同一篇文章:

ReadOnlyCollection<T> is a much better ReadOnlyCollectionBase. It’s in System.Collections.ObjectModel namespace.

实际上,ReadOnlyCollection<T>ReadOnlyCollectionBase在泛型领域。

注意,类似地,IList<T>不执行 IList .

一般来说,前泛型类不能用作泛型类的有用抽象(IEnumerable 除外)。

关于C#:微软为什么不让 ReadOnlyCollection<T> 继承自 ReadOnlyCollectionBase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430498/

相关文章:

c# - 如何在另一个线程填充它时枚举 IEnumerable

SharePoint 2010 网站集管理选项

c# - HttpRequestHeader 内容编码问题

generics - F# 泛型并不那么通用

android - Kotlin函数返回数据类错误,类型不匹配,必填: <Data Class>#1

c# - .net 集合内存优化 - 这种方法有效吗?

c# - 如何从 winform 启动 Windows 通用应用程序

c# - 按页分类的表格

c# - 大小复选框

c# - 枚举类型的通用签名