哪种形式的财产申报更合适?

时间:2013-05-14 22:27:51

标签: c# properties

这个简单的问题已经有一段时间令我感到不安,我已经看到了两种声明属性的形式,我想知道有什么不同,是否有任何理由让我更喜欢彼此?

第一表格:

public int Age { get; set; }

第二表格:

private int _Age;
public int Age
{
    get { return _Age; }
    set { _Age = value; }
}

我一直使用第二种形式,而且我已经看到这个MSDN Tutorial只讨论第二种形式,所以我在这里有点困惑,哪一种更受欢迎?

4 个答案:

答案 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,但是当从类内部的方法访问该字段时,我将其更加简化为一个封闭的生态系统,其中通常只需要进行如此多的验证浪费处理器周期。