В пределах класса сорта используйте свойство или поле?
Хорошо ли использовать частное поле или свойство при написании кода в классе, который содержит их?
Например, если у меня есть эта пара полей/свойств, классы вне, этот класс должен использовать это свойство. Как насчет кода внутри класса? Должен ли он использовать частное поле или он должен также пройти через свойство?
private string _foo;
protected string Foo
{
get { return this._foo; }
}
private void SomeMethod()
{
string dummyVariable = "snuh" + this._foo; // So, this...
string dummyVariable = "snuh" + this.Foo; // ... or this?
}
Одно из преимуществ использования свойства здесь - это если в геттере есть какая-либо логика, он все равно будет выполнен. Мне любопытно узнать, есть ли в нем политика лучшей практики.
Ответы
Ответ 1
При использовании Автореализованных свойств у вас нет выбора - вы должны использовать это свойство, так как у вас нет доступа к сгенерированному полю.
Если свойство не простое и выполняет некоторую дополнительную работу (проверка, запуск и т.д.), вы должны вызвать это свойство, чтобы централизовать доступ и логику.
Если у вас есть другие свойства (что означает простое свойство без логики и поля поддержки), я бы спросил, почему они не являются одним из вышеперечисленных...
В примере, который вы приводите, это не имеет большого значения - важно быть последовательным с тем, как вы их используете, и действительно сводится к личной эстетике и стилю кодирования.