0

这不会编译

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”的支持字段。考虑从构造函数初始化器调用默认构造函数。

参数化的构造函数不会调用默认构造函数吗?

4

0 回答 0