我什么时候想使用字段而不是自动实现的属性?

时间:2014-02-07 09:41:06

标签: c#

是否存在创建字段的任何情况(除了readonly,but only because language designers haven't implemented it for properties yet),是否存在字段比属性有任何优势的情况?

3 个答案:

答案 0 :(得分:2)

首先你应该记住,在.NET中,一个属性只不过是2个方法的语法糖 - 属性获取部分的一个方法,属性集部分的一个方法。

如果您谈论公共字段与属性而不是答案:使用属性总是比公共字段更好。为什么?因为您实现了封装,使您的代码在将来更易于维护。

如果你谈论私有字段与属性比我说的更好:最好使用私有字段,因为在这种情况下没有理由使用属性。 可能有一些例外,例如延迟加载:

private string _someField;
private string SomeProperty
{
    get
    {
        if (_someField== null)
        {
            _someField= LoadData();
        }

        return _someField;
    }
}

答案 1 :(得分:1)

我倾向于将字段用于私有且通常受保护的成员,以明确表示这只是对象的状态并避免符号混乱。

我使用公共成员的属性(并在大型层次结构中受到保护),以获得典型的好处,例如我可以在以后更改行为,如果我愿意,在界面上拥有它,稍后模拟它等等。

答案 2 :(得分:0)

我的一位同事在字段更方便时提供了一个很好的案例:

float m_Time = 0;

简单初始化默认值。