public class AddClass1
{
public int val;
public static AddClass3 operator +(AddClass1 op1, AddClass2 op2)
{
AddClass3 returnVal = new AddClass3();
returnVal.val = op1.val + op2.val;
return returnVal;
}
}
public class AddClass2
{
public int val;
}
public class AddClass3
{
public int val;
}
下面的代码就可以执行:
AddClass1 op1 = new AddClass1();
op1.val = 5;
AddClass2 op2 = new AddClass2();
op2.val = 5;
AddClass3 op3 = op1 + op2;
在合适时,可以用这种方式混合类型。但要注意,如果把相同的运算符添加到AddClass2中,上面的代码就会失败,因为它将不知道要使用哪个运算符。因此应注意不要把签名相同的运算符添加到多个类中。(这是什么意思啊 没懂 麻烦大佬解答下!)
还要注意,如果混合了类型,操作数的顺序必须与运算符重载的参数的顺序相同。用了重载的运算符和顺序错误的操作数,操作就会失败。所以不能像下面这样使用运算符:
AddClass3 op3=op2 + op1;