Страницы

Поиск по вопросам

воскресенье, 15 декабря 2019 г.

this в структуре

#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 для установки поля, а это запрещено, так как в структуре поля должны быть проиницилизированы до обращения к ним. В случае же вызова конструктора по умолчанию - поле инициализируется в нем значением по умолчанию.

Комментариев нет:

Отправить комментарий