为什么我们不在运算符重载方法中初始化返回的对象?

时间:2014-11-08 18:14:58

标签: c# operator-overloading

我试图学习运算符重载,我找到了这样的代码:

public static ComplexNumber operator -(ComplexNumber x) {
    ComplexNumber y;
    y.re = -x.re;
    y.im = -x.im;
    return y;
}

我想知道为什么我们不像这样初始化yComplexNumber y = new ComplexNumber()

1 个答案:

答案 0 :(得分:2)

正如我在评论中所说:它可能(几乎可以肯定)是struct

参见例如this snippet

  

使用New运算符创建结构对象时,会创建它并调用相应的构造函数。与类不同,可以在不使用New运算符的情况下实例化结构。如果您不使用New,则字段将保持未分配状态,并且在初始化所有字段之前无法使用该对象。

您可以轻松地自行测试:

void Main()
{
    X x;
    x.blabla = 5;
    Console.WriteLine (x.blabla);
}

public struct X {
    public int blabla;
}