【问题标题】:Access fields or properties from within the declaring class从声明类中访问字段或属性
【发布时间】:2009-08-01 14:53:55
【问题描述】:
Public Class FooBar
{
    private int _foo;

    public int Foo { 
        get { return _foo; }
        set { _foo = value; }
    }

    public void DoStuff()
    {
        _foo++; // Do this?
        Foo++; // Or this?
    }
}

在类中访问字段或属性(如果存在)是否有更可接受的做法?我一直有访问该字段的习惯,但是由于我一直在做有很多 INotifyPropertyChanged 的​​ WPF,我发现自己需要访问该属性才能更改通知。所以现在我在我的类中混合了字段和属性访问,虽然从编译器的角度来看,风格和可读性并不重要,但感觉......很尴尬。

【问题讨论】:

    标签: .net properties field readability


    【解决方案1】:

    在某些情况下访问该属性是没有意义的(例如,如果您正在实现该属性本身)。把这些情况放在一边,我会默认使用属性样式(除非我有特定的理由不这样做)。通过属性访问该字段会将所有更改引导到单个代码路径中,从而使更改实现和调试更容易,并且不易出错。

    【讨论】:

    • 单一代码路径是我开始对以前的所有字段访问感到不舒服的一个重要原因。如果我从字段开始,然后添加一堆属性访问,然后在我的属性设置器中添加一些额外的功能,属性访问会命中,但所有字段访问都不会。
    【解决方案2】:

    这很大程度上取决于个人风格。这里没有 100% 正确或错误的答案。

    出于几个原因,我的偏好是每次都经过该物业

    • 使调试更容易,因为您可以中断属性访问并查看所有获取/设置值。无法使用字段
    • 一致性:在某些情况下,例如自动属性,不可能直接转到支持字段。每次遍历该属性都会显示相同的代码访问相同的值。
    • 性能:简单属性可能由 JIT 内联,因此性能问题通常是静音点。

    【讨论】:

      猜你喜欢
      • 2020-02-04
      • 2015-08-25
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-09
      相关资源
      最近更新 更多