-2

示例 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.A具有Class2.A相同的结果。新号码也可以分配给两者。那么这样做有什么不同呢?有什么好处吗?为什么以及何时应该使用它们?

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

4

1 回答 1

1

技术上的区别在于getset访问器的存在。您可以自定义其中一个或两个以执行更多操作,而不仅仅是获取或设置值。

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

如果您打算将类的属性绑定到 UI 控件(DataGridTextBox等),或者如果您将来有可能自定义 get/set 访问器,那么请创建属性。将字段更改为属性是一项重大更改。

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

如果代码行是一个问题,您可以使用自动实现的属性:

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

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

于 2013-08-09T16:13:25.950 回答