MSDN这样解释CollectionBases——为强类型集合提供 abstract 基类。
也经常看到通过继承CollectionBases类实现自定义的集合类,但是没感觉有什么优点。
首先CollectionBases的方法接收object类型的参数,返回object类型的结果,所以基本都得重新实现。如果要通过继承CollectionBases实现值类型的集合类,还会有装箱拆箱的操作。
所以我觉得还不如继承List<>类或组合一个List<>方便。
CollectionBases是不是有我没有意识到的优点和作用呢?
.NET 2.0之前没有泛型,所以微软提供了CollectionBase;
.NET 2.0有了泛型之后,CollectionBase用的就很少了。
我觉得不用CollectionBase的两大原因:
1. 装箱/拆箱
2. 不支持LINQ
那如果要自定义集合类,比较好的方法是什么?
@CharlesNet: 继承自List<T>
CollectionBase还是有用的,你留意一下,它的方法是virtual,意味着你可以重写,自定义自己的行为.
CollectionBase 它的方法是virtual,可以重写,可以 模拟mock,有用