所以我以前从未见过这个,我试图找出它的作用:
public static MyFunction operator +(MyObject first, MyObject second)
答案 0 :(得分:8)
它会覆盖该类的+
运算符,允许这样的代码进行编译和运行:
MyObject op1 = new MyObject();
MyObject op2 = new MyObject();
MyFunction result = op1 + op2;
执行+
操作会调用您发布的方法。有关运算符重载的更多信息,请参阅MSDN
答案 1 :(得分:8)
它被称为operator overload。
它允许您使用+
,-
,%
等原始运算符应用于您定义的对象。
可能有用的示例是,如果您有两个列表,并且您想要将一个列表添加到另一个列表的末尾。 MSDN使用的另一个例子是你有两个向量的复数。
现在通常更合适的方法是定义一个方法,该方法接受要应用的操作数的数量并使用该方法,而不是通过覆盖用于执行的操作符来使代码更难以读取和调试其他的事情。
<强> TL;博士;除非你有充分的理由,否则使用方法而不是运算符重载。
答案 2 :(得分:1)
它被称为运营商重载,并允许您为运营商定义行为,例如&#39; +&#39;,&#39; - &#39;,&#39; ==&# 39;等等。
有关详细信息,请参阅此处:https://msdn.microsoft.com/en-us/library/aa288467%28v=vs.71%29.aspx