CollectionBase类仍然受支持吗?

时间:2011-04-18 14:56:08

标签: c# .net collections collectionbase

我想创建一个继承自CollectionBase的类,但似乎它不支持LINQ扩展!

它仍然受支持吗?或者有替代解决方案吗?

2 个答案:

答案 0 :(得分:25)

它仍然是支持的,但它已经过时了。您应该始终更喜欢使用System.Collections.GenericSystem.Collections.ObjectModel命名空间中定义的集合。

您也可以继承其中一个通用集合,以创建自己的自定义强类型集合。它将完全支持LINQ,因为它们已经实现了IEnumerable<T> List<T>Collection<T>对您的案例都是不错的选择。

尽可能避免使用CollectionBaseArrayListHashTable等非通用集合。使用它们会对性能造成影响,并且与最新版本的框架中引入的通用版本相比,它们几乎没有优势(如果有的话!)。

答案 1 :(得分:3)

Linq extensions are written for IEnumerable<T>(Generic)和 CollectionBase (非泛型)不会从中继承。这就是为什么你不能使用Linq的原因。

改为使用System.Collections.ObjectModel.Collection<T>