这不会编译
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'在将控制权返回给调用者之前必须完全分配。考虑从构造函数初始化程序中调用默认构造函数。
参数化构造函数是否仍然调用默认构造函数?