我想创建一个继承自CollectionBase
的类,但似乎它不支持LINQ扩展!
它仍然受支持吗?或者有替代解决方案吗?
答案 0 :(得分:25)
它仍然是支持的,但它已经过时了。您应该始终更喜欢使用System.Collections.Generic
或System.Collections.ObjectModel
命名空间中定义的集合。
您也可以继承其中一个通用集合,以创建自己的自定义强类型集合。它将完全支持LINQ,因为它们已经实现了IEnumerable<T>
List<T>
或Collection<T>
对您的案例都是不错的选择。
尽可能避免使用CollectionBase
,ArrayList
和HashTable
等非通用集合。使用它们会对性能造成影响,并且与最新版本的框架中引入的通用版本相比,它们几乎没有优势(如果有的话!)。
答案 1 :(得分:3)
Linq extensions are written for IEnumerable<T>
(Generic)和 CollectionBase (非泛型)不会从中继承。这就是为什么你不能使用Linq的原因。