继承自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中使用ArrayList
, List<T>
, Hashtable
或Dictionary<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