我想创建一个继承自 的类CollectionBase
,但它似乎不支持 LINQ 扩展!
它仍然支持吗?还是有替代解决方案?
它仍然受支持,但已过时。相反,您应该始终更喜欢使用在System.Collections.Generic
或System.Collections.ObjectModel
命名空间中定义的集合。
您也可以从通用集合之一继承来创建您自己的自定义强类型集合。并且它将完全支持 LINQ,因为它们已经实现了IEnumerable<T>
.
要么 要么List<T>
是Collection<T>
您的案例的好选择。
尽可能避免使用非泛型集合,如CollectionBase
、ArrayList
和HashTable
。使用它们会降低性能,并且与框架的最新版本中引入的通用版本相比,它们几乎没有优势(如果有的话!)。
Linq 扩展是为IEnumerable<T>
(Generic) 编写的,而CollectionBase (Non-generic) 不会继承自它。这就是为什么你不能在上面使用 Linq。