C#加法运算符重载

时间:2016-02-18 21:20:13

标签: c# syntax

我正在尝试将一些C#代码移植到另一种语言(C#不是我常用的语言)。

我有一个向量类(cpVect),它会覆盖'+'运算符两次:

    public static cpVect operator +(cpVect p1, cpVect p2)
    {
        return new cpVect(
            p1.x + p2.x,
            p1.y + p2.y
            );
    }

    public static cpVect operator +(cpVect p1)
    {
        return new cpVect(
            +p1.x,
            +p1.y
            );
    }

我可以看到两个方法都返回了cpVect的新实例,但我试图弄清楚如何在代码示例中调用这些方法(所以我可以确保将它们移植到它们中)正确)。例如,第二种方法是否将p1添加到接收cpVect?

v3 = v1 + v2   <-- does this call method one above?
v1 = v1 + v2   <-- does this call method two above?

由于

1 个答案:

答案 0 :(得分:4)

两者都调用二进制运算符。如果您只有一个操作数,则会调用一元运算符:

v3 = +v1;

一元+运算符很少有用,说实话 - 但它主要用于与一元-运算符对称。