Преобразование класса родителя в класс потомок в C#

У меня есть два класса Polynom и PolynomSon (наследник Polynom). Класс Polynom содержит оператор суммы полиномов. Мне нужно написать оператор суммы для работы с наследником, который будет использовать оператор родителя, поэтому я пишу так:

 public static PolynomSon operator +(PolynomSon q, PolynomSon r)
 {
     Polynom t = new PolynomSon();
     t = (Polynom)q + r;
     return t as PolynomSon; //так дает null при преобразовании
 } 

Не получается преобразовать из Polynom в PolynomSon после суммирования. Подскажите, пожалуйста, как исправить, чтобы получилось преобразовать?


Ответы (1 шт):

Автор решения: Igor
Polynom t = new PolynomSon();

здесь вызов new PolynomSon() не имеет смысла, так как переменной t сразу же присваивается другое значение.


Невозможно "преобразовать" результат оператора Polynom.+

t = (Polynom)q + r; 

в PolynomSon, потому что этот результат не является PolynomSon.

Вам придется написать реализацию сложения, где результатом является PolynomSon.


Или добавить в класс PolynomSon конструктор

public PolynomSon(Polynom p) { ... }

и делать:

return new PolynomSon((Polynom)q + r);
→ Ссылка