Если вы просто смотрите на простом примере, вы правы, это выглядит как отходы.
BUT ... Есть еще к этому.
Вот большая статья, которая идет в гораздо более подробно: Why Properties Matter по переполнением стека легенды Jon тарелочкам.
Прежде всего, это стало правилом лучших практик, чтобы публично не публиковать поля классов. У вас нет контроля над тем, что происходит с ним. Но если вы используете свойство вместо этого, у вас есть возможность добавлять дополнительную логику, которая происходит под капотом, так часто, как требуется, без изменения каких-либо изменений в публичном интерфейсе вашего класса. Это может быть код для обработки множественного доступа к ограниченным ресурсам, таким как сеть/база данных и т. Д. ...
Во-вторых, с версией с полем подложки вы можете очень легко реализовать интерфейс INotifyPropertyChanged
для использования значений с WPF и Model-View-ViewModel (MVVM) модель:
public string FavoriteColor
{
get
{
return this.favoriteColor;
}
set
{
if (value != this.favoriteColor)
{
this.favoriteColor = value;
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("FavoriteColor"));
}
}
}
}
(код фрагмент взято с Basic MVVM QuickStart)
В-третьих: Но если вам когда-либо понадобится перейти из общего поля в собственность - у вас получится другой код IL - вы теряете бинарную совместимость. Это может повлиять на сериализацию и перекомпилировать код из других сборок, которые обращаются к измененному классу. Это было бы плохо, если бы вы развертывали свое приложение в частичных обновлениях, когда одновременно развертываются не все сборки.
С другой стороны, вы можете реализовать свойства как с помощью поля поддержки, так и с помощью автоматического свойства, и в обоих случаях вы получите тот же IL-код, что означает, что у вас меньше шансов что-то сломать.
@ p.s.w.g Вы должны ответить на этот вопрос. – Measuring
Чтобы уточнить, что говорит p.s.w.g: Раньше было невозможно создать однострочное свойство. Вы _needed_ лежащая в основе частная переменная. – Brandon
Значит, это еще одно удержание с предыдущих дней? –