#c_sharp
Зачем для инициализации свойства структуры через конструктор использовать this? Без :this() будет ошибка при компиляции struct T { public T(int u) : this() { this.U = u; } public int U { get; private set; } }
Ответы
Ответ 1
При определении автосвойства, в классе/структуре создается приватное поле, в котором и хранится значение. Свойство же представляет из себя всего две функции: get - для получения значения и set для установки. Таким образом, без вызова конструктора по умолчанию (:this()) идет попытка вызвать функцию set для установки поля, а это запрещено, так как в структуре поля должны быть проиницилизированы до обращения к ним. В случае же вызова конструктора по умолчанию - поле инициализируется в нем значением по умолчанию.
Комментариев нет:
Отправить комментарий