问题描述
我想知道是否有一种方法可以使用重载的二进制运算符,例如派生类中基类的+运算符。 例如,我有以下2类:
class Class1
{
public int num { get; set; }
public Class1(int a)
{
num = a;
}
public static Class1 operator +(Class1 a,Class1 b)
{
return new Class1(a.num + b.num);
}
}
class Class2 : Class1
{
int x { get; set; } = 99;
public Class2(int a):base(a)
{
}
}
Class1重载+运算符并返回Class1的对象,其中num的值是作为Class1类型的参数a和b的属性num的总和。
Class2派生自Class1。 Class2的+操作的工作方式与Class1的+操作相同,因此我希望Class2使用Class1的+操作。问题在于,重载+运算符方法需要2个Class1类型的对象并返回Class1对象。因此,如果我试图在Class2的2个对象之间进行+操作,例如
Class2 a = new Class2(4);
Class2 b = new Class2(5);
a = a + b;
所以我试图像这样投射它:
a = (Class2)(a + b);
但是我以以下运行时错误结尾:
system.invalidCastException:'无法转换类型的对象 “ TimeSeriesModule.Class1”键入“ TimeSeriesModule.Class2”。
一个很好的解决方案是我可以在派生类中使用基类的重载运算符,如果强制转换不是问题,那将是很好的选择,但我不确定这些解决方案中的任何一个都可能。
谢谢。
亲切问候 最高
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)