【发布时间】:2012-04-03 07:13:30
【问题描述】:
我想重载 + 运算符以将段添加在一起以形成路径。 我已经定义了一个路径,其中 T 是分段并包含一个列表(其中自然 T 是分段)。 Segment是各种类型Segment的抽象基类,即LineSegment
我有一个重载的方法 Connected 来检查这些段是否有一个共同的端点。我想在抽象的 Segment 类中定义 2 个 Segment 的重载,然后在各自的派生类中定义不同的类型,即 Segment 和 LineSegment。
public static Path<T> operator +(Segment s1, Segment s2)
{
if (s1.Connected(s2))
{
List<Segment> slist = new List<Segment>();
slist.Add(s1);
slist.Add(s2);
Path<T> p = new Path<T>(slist);
return p;
}
else
{
return null;
}
}
@乔恩
所以本质上...
我正在尝试替换以下代码(path1 是 Path,Segments 是 List,其中 T 是 Segment)。
Path<T> path1 = new Path<T>(s1);
path1.Segments.Add(s2);
与
Path<T> path1 = s1 + s2;
问题是用的代码不能编译。
【问题讨论】:
-
还有什么问题?顺便说一句:你没有检查你的输入值是否可以为空,执行时可能会失败。
-
您仍然没有解释问题所在。您当前的代码是否有效?如果不是,它做什么(编译错误、异常……)?
标签: c# generics polymorphism operator-overloading abstract-class