Я хочу сделать это:
public Name
{
get;
set
{
dosomething();
??? = value
}
}
Можно ли использовать автоматически созданное частное поле?
Или требуется, чтобы я реализовал это так:
private string name;
public string Name
{
get
{
return name;
}
set
{
dosomething();
name = value
}
}
c#
properties
Петердк
источник
источник
Ответы:
Как только вы захотите сделать что-нибудь особенное в геттере или сеттере, вы больше не сможете использовать свойства auto.
источник
Вы можете попробовать что-то вроде этого:
public string Name { get; private set; } public void SetName(string value) { DoSomething(); this.Name = value; }
источник
private set
, предотвратит установку свойства членами его класса; это будет строго только для чтения. Вы сможете установить его данные только в конструкторе.Это невозможно. Либо автоматически реализованные свойства, либо пользовательский код.
источник
Начиная с C # 7, вы можете использовать определения тела выражения для свойств
get
и методовset
доступа.Подробнее здесь
private string _name; public string Name { get => _name; set { DoSomething(); _name = value; } }
источник
Требуется, чтобы вы реализовали его полностью с учетом вашего сценария. Оба
get
иset
должны быть либо реализованы автоматически, либо полностью реализованы вместе, а не их комбинация.источник