为什么我需要使用自动属性

时间:2015-04-29 17:49:30

标签: c# struct backing-field

这不会编译

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

参数化构造函数是否仍然调用默认构造函数?

0 个答案:

没有答案