Доступ к полям или свойствам осуществляется изнутри объявляющего класса
-
06-07-2019 - |
Вопрос
Public Class FooBar
{
private int _foo;
public int Foo {
get { return _foo; }
set { _foo = value; }
}
public void DoStuff()
{
_foo++; // Do this?
Foo++; // Or this?
}
}
Существует ли более общепринятая практика доступа к полям или свойствам (если таковые существуют) в классе?У меня всегда была привычка обращаться к полю, но поскольку я использую WPF, в котором много INotifyPropertyChanged, я обнаружил, что мне нужно получить доступ к свойству, чтобы изменить уведомление.Итак, теперь у меня есть сочетание доступа к полям и свойствам во всех моих классах, и хотя с точки зрения компилятора это не имеет значения, стилистически и удобочитаемо, это кажется...неудобно.
Решение
Есть, конечно, случаи, когда доступ к свойству не имеет смысла (например, если вы реализовывали само свойство). Если оставить в стороне эти случаи, я бы по умолчанию выбрал стиль свойства (если только у меня нет особой причины этого не делать). Доступ к полю через свойство направит все изменения в единый путь кода, что облегчит изменение реализации и отладки и может быть менее подвержено ошибкам.
Другие советы
Во многом это зависит от личного стиля.Здесь нет 100% правильного или неправильный ответа.
Я предпочитаю каждый раз осматривать объект недвижимости по нескольким причинам
- Упрощает отладку, так как вы можете прервать доступ к свойству и просмотреть все полученные / установленные значения.Невозможно с полем
- Последовательность:В некоторых случаях, таких как автоматические свойства, невозможно перейти непосредственно к полю резервного копирования.Просмотр свойства каждый раз показывает один и тот же код, обращающийся к одному и тому же значению.
- Производительность:Простыми свойствами являются вероятно встроен JIT, поэтому проблема с производительностью обычно является немым моментом.