В пределах класса сорта используйте свойство или поле?

Хорошо ли использовать частное поле или свойство при написании кода в классе, который содержит их?

Например, если у меня есть эта пара полей/свойств, классы вне, этот класс должен использовать это свойство. Как насчет кода внутри класса? Должен ли он использовать частное поле или он должен также пройти через свойство?

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

При использовании Автореализованных свойств у вас нет выбора - вы должны использовать это свойство, так как у вас нет доступа к сгенерированному полю.

Если свойство не простое и выполняет некоторую дополнительную работу (проверка, запуск и т.д.), вы должны вызвать это свойство, чтобы централизовать доступ и логику.

Если у вас есть другие свойства (что означает простое свойство без логики и поля поддержки), я бы спросил, почему они не являются одним из вышеперечисленных...

В примере, который вы приводите, это не имеет большого значения - важно быть последовательным с тем, как вы их используете, и действительно сводится к личной эстетике и стилю кодирования.