我有两个班的电弧类别和Line类我如何不同的对象存储在一个列表
public class Arc
{
protected double startx;
protected double starty;
protected double endx;
protected double endy;
protected double radius;
public Arc(){}
}
public class Line
{
protected double startx;
protected double starty;
protected double endx;
protected double endy;
protected double length;
public Line(){}
}
但我想存储在同一列表弧和线,所以我想等的接口这
public interface Entity
{
double StartX();
double StratY();
double EndX();
double EndY();
}
然后我给每个类添加适当的方法,并添加了代码来使用接口。现在,我可以将两种类型的对象添加到列表中,但我想从线对象获取长度,并且不希望将长度方法添加到弧或接口。我唯一的选择是将线对象转换回像这样的线对象吗?
List<Entity> entities = new List<Entity>();
entities.Add(new Line(10,10,5,5));
Line myLine = (Line)Entities[0]
double length = myLine.Length();
*假设我在线类中有所有适当的方法。
或者有更好的/不同的方式来做到这一点?
这是一个比语法更多的体系结构问题。您正在创建*可能有或没有长度*的对象列表。你没有在你的问题中讨论过的是如何或为什么你知道什么时候某个实体会有一个长度。 – 2009-12-04 17:13:54