Доступ к полям или свойствам из объявленного класса - PullRequest
0 голосов
/ 01 августа 2009
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, я обнаружил, что мне нужно получить доступ к свойству, чтобы изменить уведомление. Так что теперь у меня есть смесь доступа к полям и свойствам во всех моих классах, и хотя с точки зрения компилятора это не имеет значения, стилистически и читабельно, оно кажется ... неловким.

Ответы [ 2 ]

2 голосов
/ 01 августа 2009

Многое зависит от личного стиля. Здесь нет 100% правильного или неправильного ответа.

Я предпочитаю проходить через собственность каждый раз по нескольким причинам

  • Упрощает отладку, так как вы можете прервать доступ к свойству и просмотреть все значения get / set. Не возможно с полем
  • Согласованность: в некоторых случаях, например, при автоматических свойствах, невозможно перейти непосредственно к вспомогательному полю. Каждый раз, просматривая свойство, показывает один и тот же код, который обращается к одному и тому же значению.
  • Производительность: Простые свойства вероятны , встроенные в JIT, поэтому проблема производительности, как правило, не имеет значения.
2 голосов
/ 01 августа 2009

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

...