我试图学习运算符重载,我找到了这样的代码:
public static ComplexNumber operator -(ComplexNumber x) {
ComplexNumber y;
y.re = -x.re;
y.im = -x.im;
return y;
}
我想知道为什么我们不像这样初始化y
:ComplexNumber y = new ComplexNumber()
。
答案 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;
}