方法定义中的operator +有什么作用?

use*_*381 1 .net c# operator-overloading

所以我以前从未见过这个,我想弄清楚它的作用:

public static MyFunction operator +(MyObject first, MyObject second)
Run Code Online (Sandbox Code Playgroud)

Bra*_*NET 8

它会覆盖+该类的运算符,允许这样的代码进行编译和运行:

MyObject op1 = new MyObject();
MyObject op2 = new MyObject();
MyFunction result = op1 + op2;
Run Code Online (Sandbox Code Playgroud)

执行该+操作会调用您发布的方法.有关运算符重载的更多信息,请参阅MSDN


Cod*_*man 8

它被称为运算符重载.

它允许你使用原始的运营商,如+,-,%,等适用于您定义的对象.

它可能有用的一个示例是,如果您有两个列表,并且您想要将一个列表添加到另一个列表的末尾.MSDN使用的另一个例子是你有两个向量的复数.

目前,通常更合适的方法是定义一个方法,该方法接受要应用的操作数的数量并使用该方法,而不是通过覆盖用于其他事物的运算符来使代码更难以读取和调试.

TL;博士; 除非你有充分的理由,否则使用方法而不是运算符重载.