在通用列表中存储继承的类 - 请提出建议

时间:2012-08-27 22:17:17

标签: c# generic-list

我正在构建一个简单的形状设计器,它很简单 - 向一个区域添加形状,你可以通过拖放来调整它们并移动它们 - 想想VS中的表单设计器。

目前我有一个Shape的基类,它代表了常见的属性(Location,Size)和方法。表示设计器上的对象的其他类继承自Shape,例如圆形,正方形等。我将对象存储在通用列表中,例如List<Shape>

我的问题是关于列表与其他通用数据结构,以及何时使用它们。

编辑:感谢Mathias指出我的真实含义。

干杯

1 个答案:

答案 0 :(得分:2)

  

我的问题是:存储形状的最佳方法是什么?如果不是为什么不呢?

这取决于。其中一个主要问题应该是如何使用形状列表。访问,插入和删除的速度将根据您使用的集合类型而变化。

例如:

  • 如果您主要关注索引,那么List<T>是合适的。
  • 如果您只是迭代,但需要经常添加和删除形状,那么LinkedList<T>或类似结构可能是有益的。这提供了快速枚举,但比List<T>快速插入或删除(特别是如果您从列表中间删除)。