将Collections作为属性与Classes类继承集合

最近我使用了一个从集合继承而来的类,而不是在集合中实例化集合,这是可以接受的还是会在后续创建看不见的问题? 为了清楚起见,下面的例子:

public class Cars : List<aCar>

而不是像这样的东西:

public class Cars
{
 List<aCar> CarList = new List<aCar>();
}

有什么想法吗?


问题在于你的Cars类仍然有从List继承的接口,这可能允许你不需要的操作。


这取决于你班级的最终目的。 如果它只是作为你自己的集合实现来使用继承。 如果没有,请将收藏作为财产。 第二种选择更通用:

  • 由于只能从一个类继承,因此可能需要从另一个类而不是集合继承
  • 如果你需要将这个类看作一个集合,你可以包含一个索引器属性。

  • 我以前误解了这个问题。

    我会建议使用组合而不是继承。 如果你想能够使用所有时髦的LINQ东西,尽一切办法实现IEnumerable<T>甚至IList<T> - 但我不会直接从List<T>派生。

    如果您确实想要“免费”获取收集内容,但仍保留控制权,则可以使用CollectionBase。 在继承方面,这仍然会使你失望,但至少你可以更好地控制集合中发生的事情。

    链接地址: http://www.djcxy.com/p/53875.html

    上一篇: Classes with Collections as Properties vs. Classes Inheriting Collections

    下一篇: C# inherit from Dictionary, iterate over KeyValuePairs