Свойства, когда реализованы так:
public string FirstName { get; set; }
Автоматически создать закрытую переменную (компилятор делает это для вас), так что вам не придется беспокоиться об этом. Это будет вести себя точно так же, как если бы вы:
private string firstName;
public string FirstName {
get { return firstName; }
set { firstName = value; }
}
Там нет причин, чтобы не использовать автоматические свойства ({получить; набор;}). Предоставьте те же преимущества, что и ваша собственная переменная-член.
Кроме того, если позднее вы решите, что вам необходимо выполнить дополнительную обработку (например, если вы решите внедрить INotifyPropertyChanged в свой установщик свойств), вы можете добавить это без изменения общедоступного API, но вручную установить фоновое поле ,
Вы не должны раскрывать поля-члены, т. Е. Они должны быть закрытыми и должны быть обернуты свойствами, когда вам необходимо предоставить доступ к ним вне вашего класса. Это не означает, что свойство _every_ должно закрывать личное поле. –