简单的说,微软定义了一个ReadOnlyCollectionBase
, 但没有将其用作 ReadOnlyCollection<T>
的基类当听起来很明显应该是这样的时候。
我是不是漏掉了什么?我的意思是,是否有充分的理由不将此类作为基类?
最佳答案
可能是因为它不是通用的并且实现了 ICollection
而ReadOnlyCollection<T>
是通用的并实现了 ICollection<T>
.注意 ICollection<T>
不执行 ICollection
.在那topic :
ICollection<T>
seems likeICollection
, but it’s actually a very different abstraction. We found thatICollection
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 thatICollection
does not have an exact corresponding peer in the generic world;IEnumerable<T>
is the closest.
来自同一篇文章:
ReadOnlyCollection<T>
is a much betterReadOnlyCollectionBase
. It’s inSystem.Collections.ObjectModel
namespace.
实际上,ReadOnlyCollection<T>
是ReadOnlyCollectionBase
在泛型领域。
注意,类似地,IList<T>
不执行 IList
.
一般来说,前泛型类不能用作泛型类的有用抽象(IEnumerable
除外)。
关于C#:微软为什么不让 ReadOnlyCollection<T> 继承自 ReadOnlyCollectionBase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430498/