Поскольку свойства представляют собой не что иное, как метод get и set вокруг вспомогательного поля, они часто реализуют некоторую логику, которая должна запускаться при доступе к этому свойству - чаще всего некоторые проверки.
Представьте, например, следующеесвойство, представляющее возраст людей:
int Age { get; set; }
Без какой-либо логики вы можете присвоить этому свойству любой int, например, отрицательное значение.Для этого вы вводите некоторую проверку в установщик:
int Age {
{ get => return _age; }
{ set => _age = value > 0 ? value : 0 }
}
В вашем классе вы обычно имеете контроль над устанавливаемыми значениями.Сказав это, нет реальной необходимости для проверки ввода.Однако я чувствую, что в любом случае лучше сделать это, чтобы иметь единственную точку доступа члена .Кроме того, легко забыть, что на самом деле означает valid , когда ваш класс становится больше.Таким образом, вы можете довольно легко написать следующее, которое вызовет у вас головную боль при выполнении кода, поскольку оно обходит вашу проверку:
_age = -10;
На самом деле это редко бывает так просто.Вам нужно будет просканировать все возможные места, где затронуто ваше поле поддержки, чтобы определить, откуда пришло это недопустимое значение.
Поэтому я предпочитаю также использовать свойства в объявленном классе.