将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