价值与财产有什么不同?什么时候用?为什么?

时间:2013-08-09 16:11:25

标签: c# performance

示例1:

class Class1
{
    public static int A = 1;
}

示例2:

class Class2
{
    private static int _A = 1;
    public static int A
    {
        get
        {
            return _A;
        }
        set
        {
            _A = value;
        }
    }
}

假设我不想进行任何验证并执行任何额外功能。我只是想保留普通数据。 Class1.AClass2.A都有相同的结果。新号码也可以分配给它们。这样做有什么不同?有什么好处吗?我为什么以及何时使用它们?

如果它们之间没有区别,我应该使用示例1,因为示例1仅需要1行代码而示例2需要6-10行。你同意吗?

1 个答案:

答案 0 :(得分:1)

技术的区别在于getset访问者的存在。您可以自定义其中之一或两者以执行更多只获取或设置值。

实际的区别在于,许多数据绑定方法(包括大多数(如果不是所有的.NET控件)都使用反射来绑定到属性 - 它们不会支持直接绑定到字段

如果您打算将类的属性绑定到UI控件(DataGridTextBox等),或者 slightest 您可能会在将来自定义get / set访问器,然后创建属性。将字段更改为属性是一个重大变化。

许多编码标准(including FxCop)认为您应该使用属性而不是公共数据的字段。

如果需要关注代码行,您可以使用自动实现的属性:

class Class2
{
    public static int A {get; set; }
}

您可以稍后将逻辑添加到get / set访问器,而不会破坏您的类的用户。