首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将集合作为属性的类与继承集合的类

将集合作为属性的类与继承集合的类
EN

Stack Overflow用户
提问于 2008-12-08 15:44:50
回答 6查看 1.2K关注 0票数 8

最近我使用了一个从集合继承的类,而不是在类中实例化集合,这是可以接受的吗?或者它会在以后产生看不见的问题吗?为了清楚起见,下面的例子如下:

代码语言:javascript
复制
public class Cars : List<aCar>

而不是像这样的东西:

代码语言:javascript
复制
public class Cars
{
 List<aCar> CarList = new List<aCar>();
}

有什么想法吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-12-08 15:52:32

这样做的问题是,您的Cars类仍然具有它从List继承的接口,这可能会允许您不想要的操作。

票数 10
EN

Stack Overflow用户

发布于 2008-12-08 15:53:46

这取决于你的课程的最终目的。如果它只能作为您自己的集合实现来工作,请使用继承。如果不是,则将a集合作为属性包括在内。第二个选项更通用:

  • 由于只能从一个类继承,因此可能需要从另一个类继承,而不是集合
  • 如果需要将该类作为集合查看,则可以包括索引器属性。
票数 6
EN

Stack Overflow用户

发布于 2008-12-08 15:58:22

我之前误读了这个问题。

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

如果您确实想“免费”获得收藏内容,但仍然保留控制权,那么您可以使用CollectionBase。这仍然限制了您继承的机会,但至少您对集合中发生的事情有了更多的控制。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/349904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档