这不会编译
public struct Matrix
{
readonly double[] elems;
public Matrix(int rows, int cols)
{
this.elems=new double[rows*cols];
this.Rows=rows;
this.Columns=cols;
}
public int Rows { get; private set; }
public int Columns { get; private set; }
}
但这确实:
public struct Matrix
{
readonly double[] elems;
public Matrix(int rows, int cols) : this()
{
this.elems=new double[rows*cols];
this.Rows=rows;
this.Columns=cols;
}
public int Rows { get; private set; }
public int Columns { get; private set; }
}
这是为什么?
编译时错误是
错误 CS0188:“this”对象在其所有字段都分配给之前无法使用
和
错误 CS0843:在将控制权返回给调用者之前,必须完全分配自动实现的属性“SO_MMul.Matrix.Columns”的支持字段。考虑从构造函数初始化器调用默认构造函数。
参数化的构造函数不会调用默认构造函数吗?