这个简单的问题已经有一段时间令我感到不安,我已经看到了两种声明属性的形式,我想知道有什么不同,是否有任何理由让我更喜欢彼此?
第一表格:
public int Age { get; set; }
第二表格:
private int _Age;
public int Age
{
get { return _Age; }
set { _Age = value; }
}
我一直使用第二种形式,而且我已经看到这个MSDN Tutorial只讨论第二种形式,所以我在这里有点困惑,哪一种更受欢迎?
答案 0 :(得分:2)
第一种形式相当“新”。所以你会发现很多包含第二种形式的“旧”代码。
今天,使用现代版本的C#,使用第二种形式的唯一原因是在getter或setter中连接更多逻辑。
例如:
private int myPropertyValue;
public int MyProperty
{
get
{
return myPropertyValue;
}
set
{
if (value >= 0 && value <= 100)
{
myPropertyValue = value;
}
else
{
// throw exception here.
}
}
}
答案 1 :(得分:1)
当您不对该属性进行任何额外处理或访问控制时,第一个是正常的。它只是一种更快捷的方式,在C#3中引入。
看看here。
答案 2 :(得分:1)
这真的是一个偏好问题。第一种格式只是语法糖,你可以让编译器为你生成第二种格式。如果我没有进行任何操作或评估,我更喜欢使用第一种形式,因为它更短更整洁。但正如其他人所指出的那样,如果你正在做C#3之前,那么你别无选择,只能做第二种形式
答案 3 :(得分:1)
只有当我有一个对字段本身没有任何作用的哑类时,我才会使用第一个表单,即它只是存储一个值。
因此,在大多数情况下,我会使用第二种形式。这允许您为外部(对类)消费者添加验证逻辑到getter / setter,但是当从类内部的方法访问该字段时,我将其更加简化为一个封闭的生态系统,其中通常只需要进行如此多的验证浪费处理器周期。