Доступ к полям или свойствам осуществляется изнутри объявляющего класса

StackOverflow https://stackoverflow.com/questions/1216746

Вопрос

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, поэтому проблема с производительностью обычно является немым моментом.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top