继承自List <T>

实现从List<T>继承的新类的最快方法是什么?

class Animal {}

class Animals : List<Animal> {} // (1)

我遇到的一个问题:通过简单地做(1) ,我发现我没有从List<T>继承任何构造函数的好处。

最后,我希望Animals行为很像List<T> (例如,可以构建,与Linq兼容)。 但除此之外,我还希望能够添加自己的自定义方法。


如果你想创建一个公开暴露的动物集合,你不应该从List<T>继承,而应该从Collection<T>继承,并在类名中使用postfix Collection 。 例如: AnimalCollection : Collection<Animal>

这由框架设计准则支持,更具体地说:

不要在公共API中使用ArrayListList<T>HashtableDictionary<K,V> 。 改用Collection<T>ReadOnlyCollection<T>KeyedCollection<K,T>或CollectionBase子类型。 请注意,通用集合仅在Framework 2.0及更高版本中受支持。


构造函数不会与类一起继承。 你必须重新实现你想要的构造函数。

public class AnimalsCollection : List<Animal>
{
     public AnimalsCollection(IEnumerable<Animal> animals) : base(animals) {} 
}

不建议从List<T>派生。 主要是因为List从来不是为了扩展,而是为了性能。

如果你想创建你自己的特定集合,你应该继承Collection<T> 。 在你的情况下,它会是:

class Animals : Collection<Animal> {}
链接地址: http://www.djcxy.com/p/9125.html

上一篇: Inheriting from List<T>

下一篇: What is the question mark operator mean in C#?