C#运算符重载是否像C ++一样支持“ + =”?

Tro*_*yvs 3 c# c++ overloading operator-keyword

我来自C ++,使用C#作为新手,只是尝试了一下:

class Class1
{
    int mI = 0;
    string mS = "ab";

    public static Class1 operator + (Class1 obj1, Class1 obj2)
    {
        return new Class1()
        {
            mI = obj1.mI + obj2.mI,
            mS = obj1.mS + obj2.mS
        };
    }

    public static void operator += (Class1 obj1)
    {
        mI += obj1.mI;
        mS += obj1.mS;
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现该operator+=函数无法编译,并说:

错误CS1019:应重载一元运算符。

那么C#根本不执行这种运算符重载吗?

Pat*_*man 8

可以重载+,但不能+=,因为每个文档

赋值运算符不能显式重载。但是,当您重载二进制运算符时,相应的赋值运算符(如果有)也会隐式重载。例如,+=使用+可以评估,可以重载。

因此,您可以阅读+=考虑x = x + y。这就是为什么不允许+=操作员重载。