仍然支持CollectionBase类吗?

仍然支持CollectionBase类吗?

问题描述:

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

它还支持吗?还是有其他解决方案?

+2

为什么不简单地实现IEnumerable ? – Tejs 2011-04-18 14:58:51

+0

@Tejs:因为我有一些验证功能,我会封装它们。 – Homam 2011-04-18 14:59:52

+1

CollectionBase似乎是过时的,前仿制药。你为什么要使用它? – 2011-04-18 15:00:47

它仍然是支持,但它已过时。您应该始终倾向于使用在System.Collections.GenericSystem.Collections.ObjectModel名称空间中定义的集合。

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

如果可能,请避免使用非通用集合,如CollectionBase,ArrayListHashTable。使用它们会导致性能损失,并且它们在较新版本的框架中引入的通用版本上几乎没有优势(如果有的话)。

+1

评论由[qtg](https://*.com/users/7368376/qtg)错误地传递为[回答](https://*.com/a/47669778/5292302)*“您能否提供任何有关官方MSDN过时的链接?”* – 2017-12-06 08:26:19

Linq extensions are written for IEnumerable<T>(通用)和CollectionBase(非通用)不从它继承。这就是为什么你无法使用Linq。

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