Зачем мне вызывать конструктор по умолчанию для `struct` с автоматическими свойствами
Это не скомпилируется
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' должно быть полностью назначено, прежде чем элемент управления будет возвращен вызывающей стороне. Попробуйте вызвать конструктор по умолчанию из инициализатора конструктора.
Разве параметризованный конструктор в любом случае не вызывает конструктор по умолчанию?