示例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行。你同意吗?
答案 0 :(得分:1)
技术的区别在于get
和set
访问者的存在。您可以自定义其中之一或两者以执行更多只获取或设置值。
实际的区别在于,许多数据绑定方法(包括大多数(如果不是所有的.NET控件)都使用反射来绑定到属性 - 它们不会支持直接绑定到字段。
如果您打算将类的属性绑定到UI控件(DataGrid
,TextBox
等),或者 slightest 您可能会在将来自定义get / set访问器,然后创建属性。将字段更改为属性是一个重大变化。
许多编码标准(including FxCop)认为您应该使用属性而不是公共数据的字段。
如果需要关注代码行,您可以使用自动实现的属性:
class Class2
{
public static int A {get; set; }
}
您可以稍后将逻辑添加到get / set访问器,而不会破坏您的类的用户。