m-y*_*m-y 11 c# generics collections
简单地说,微软定义了一个ReadOnlyCollectionBase,但没有使用它作为基类,ReadOnlyCollection<T>当它明显听起来应该是这样的.
我在这里错过了什么吗?我的意思是,是否有充分的理由不让这个类成为基类?
jas*_*son 21
可能是因为它不是通用的和实现的ICollection,ReadOnlyCollection<T>而是通用的和实现的ICollection<T>.注意,ICollection<T>没有实现ICollection.关于那个话题:
ICollection<T>似乎ICollection,但它实际上是一个非常不同的抽象.我们发现这ICollection不是很有用.同时,我们没有表示读/写非索引集合的抽象.ICollection<T>是这样的抽象,你可以说ICollection在通用世界中没有一个完全对应的对等体;IEnumerable<T>是最接近的.
从同一篇文章:
ReadOnlyCollection<T>是一个更好的ReadOnlyCollectionBase.它在System.Collections.ObjectModel命名空间中.
实际上,ReadOnlyCollection<T>是ReadOnlyCollectionBase在泛型领域.
同样,请注意,这IList<T>没有实现IList.
通常,pre-generics类不能作为泛型类的有用抽象(除了IEnumerable).
如果你看一下.net框架的历史,你会发现自2.0以来的泛型,但ReadOnlyCollectionBase已经在1.1中.不选择的原因ReadOnlyCollectionBase很简单 - 它不是通用的,而目的ReadOnlyCollection<T>是通用的.因此,它需要一个非常不同的继承树.
所有*CollectionBase类的目的是为在.net 1.1中实现强类型集合提供基础.随着2.0中泛型的引入,它们已经过时,但仍处于向后兼容的框架中.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1161 次  |  
        
|   最近记录:  |