10

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

它仍然支持吗?还是有替代解决方案?

4

2 回答 2

27

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

您也可以从通用集合之一继承来创建您自己的自定义强类型集合。并且它将完全支持 LINQ,因为它们已经实现了IEnumerable<T>.
要么 要么List<T>Collection<T>您的案例的好选择。

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

于 2011-04-18T15:00:58.223 回答
4

Linq 扩展是为IEnumerable<T>(Generic) 编写的,而CollectionBase (Non-generic) 不会继承自它。这就是为什么你不能在上面使用 Linq。

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

于 2011-04-18T15:01:27.037 回答