Я хочу перегрузить оператор + для добавления сегментов вместе, чтобы сформировать Путь. Я определил путь, где T - сегмент, и содержит список (где, естественно, T - сегмент). Сегмент является абстрактным базовым классом для различных типов сегментов, то есть LineSegmentОператор перегружает полиморфизм, возвращающий общую коллекцию
У меня есть перегруженный метод Подключен, который проверяет, что сегменты имеют общую конечную точку. Я хотел бы определить перегрузку для 2 сегментов в абстрактном сегменте, а затем для разных типов, т. Е. Сегментов и 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 это путь, Сегменты является список, где T является сегмент).
Path<T> path1 = new Path<T>(s1);
path1.Segments.Add(s2);
с
Path<T> path1 = s1 + s2;
Проблема в том, что с код не компилируется.
В чем проблема? BTW: вы не проверяете свои входные значения на значение nullability, могут не выполняться при выполнении. –
Вы все еще не объяснили, в чем проблема. Работает ли ваш текущий код? Если нет, то что делает * делает это (компилировать ошибки, исключения, ...)? – svick