我想重写我的类的运算符*。我知道如何处理*为MyClass的* MyClass的,但我怎么能实现这个具有繁殖例如可能性:覆盖运算符c#
7 * MyClass的
7可以说,双和MyClass的是MyClass的对象,
感谢您的帮助
我想重写我的类的运算符*。我知道如何处理*为MyClass的* MyClass的,但我怎么能实现这个具有繁殖例如可能性:覆盖运算符c#
7 * MyClass的
7可以说,双和MyClass的是MyClass的对象,
感谢您的帮助
当您为您的班级提供操作员时,操作员实施的参数类型控制着您正在处理的哪种情况。
举例说明:
// Declare which operator to overload (+), the types
// that can be added (two Complex objects), and the
// return type (Complex):
public static Complex operator +(Complex c1, Complex c2)
{
return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary);
}
这种方法定义,如果你想添加两个Complex
号码做什么。
如果您试图将其与double
和Complex
配合使用,编译将会失败。
在你的情况,你只需要声明两个版本:
public static MyClass operator *(MyClass c1, MyClass c2)
{
return ...
}
public static MyClass operator *(double n, MyClass c)
{
return ...
}
在这种情况下,适当的签名是:
public static MyClass operator *(double a, MyClass b)
这意味着它需要一个double
一个作为右侧的MyClass
,并返回MyClass
。
还要注意的是7 * MyClass的是不一样的MyClass的* 7。你需要两个操作符重载来实现这一点。 – rein 2010-11-17 00:24:43
没有其他方法可以写第二个运算符超负荷吗? – gruber 2010-11-17 00:47:58
如果你想支持(双)*(MyClass),那么这就是你如何做到的。你听起来好像这不能解决你的问题 - 你有什么问题? – Bevan 2010-11-17 03:34:10