Свойства C #: как использовать настраиваемое свойство без приватного поля? - PullRequest
73 голосов
/ 29 января 2011

Я хочу сделать это:

public Name
{
    get;
    set
    {
        dosomething();
        ??? = value
    }
}

Можно ли использовать автоматически сгенерированное личное поле?
Или требуется, чтобы я реализовал это следующим образом:

private string name;
public string Name
{
    get
    {
        return name;
    }
    set
    {
        dosomething();
        name = value
    }
}

Ответы [ 5 ]

86 голосов
/ 29 января 2011

Как только вы захотите сделать что-нибудь нестандартное в геттере или сеттере, вы больше не сможете использовать авто свойства.

27 голосов
/ 17 сентября 2013

Вы можете попробовать что-то вроде этого:

public string Name { get; private set; }
public void SetName(string value)
{
    DoSomething();
    this.Name = value;
}
14 голосов
/ 29 января 2011

Это невозможно.Либо автоматически реализованные свойства, либо пользовательский код.

5 голосов
/ 29 января 2011

Требуется, чтобы вы реализовали его полностью с учетом вашего сценария.И get, и set должны быть либо реализованы автоматически, либо полностью реализованы вместе, а не их комбинация.

3 голосов
/ 13 февраля 2019

Начиная с C # 7, вы можете использовать определения тела выражения для элементов доступа get и set свойства.

Подробнее здесь

private string _name;

public string Name
{
    get => _name;
    set
    {
        DoSomething();
        _name = value;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...