如何解决C#在派生类中使用基类的重载二进制运算符+,*,/,-
我想知道是否有一种方法可以使用重载的二进制运算符,例如派生类中基类的+运算符。 例如,我有以下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 举报,一经查实,本站将立刻删除。