Автоматические свойства
Если необходимо создать свойства для инкапсуляции резервных полей, то в С# есть упрощенный синтаксис, называемый автоматически реализуемыми свойствами (Automatically Implemented Properties, AIP). Приведу пример для свойства Name:
public sealed class Employee {
// Это свойство является автоматически реализуемым
public String Name { get; set; }
private Int32 m_Age;
public Int32 Age {
get { return(m_Age); }
set {
if (value < 0) // value всегда идентифицирует новое значение
throw new ArgumentOutOfRangeException("value", value.ToString(),
"The value must be greater than or equal to 0"); m_Age = value;
}
}
}
В чем преимущество автосвойств, если по сути они просто обращаются к автоматически создаваемой переменной, почему бы напрямую не обратиться к переменной без автосвойств? Дело в том, что в любой момент времени при необходимости мы можем развернуть автосвойство в обычное свойство, добавить в него какую-то определенную логику.
Стоит учтывать, что нельзя создать автоматическое свойство только для записи, как в случае со стандартными свойствами.