0

这个简单的问题困扰了我一段时间,我看到了两种声明属性的形式,我想知道有什么不同,有什么理由让我更喜欢一种吗?

第一种形式:

public int Age { get; set; }

第二种形式:

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

我一直使用第二种形式,而且我看过这个MSDN 教程只讨论了第二种形式,所以我在这里有点困惑,首选哪一种?

4

4 回答 4

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.
        }
    }
}
于 2013-05-14T22:29:25.410 回答
1

当您不对财产进行任何额外的处理或访问控制时,第一个很好。这只是一种更快的方法,在 C# 3 中引入。

看看这里

于 2013-05-14T22:31:01.523 回答
1

这真的是一个偏好问题。第一种格式只是语法糖,您可以让编译器为您生成第二种格式。如果我不进行任何操作或评估,我更喜欢使用第一种形式,因为它更短更整洁。但正如其他人指出的那样,如果你正在做 C# 3 之前的版本,那么你别无选择,只能做第二种形式

于 2013-05-14T22:37:10.293 回答
1

只有当我有一个对字段本身不做任何事情的哑类时,我才会使用第一种形式,即它只是存储一个值。

因此,在大多数情况下,我会使用第二种形式。这允许您将验证逻辑添加到外部(类)消费者的 getter/setter,但是当从类内部的方法访问字段时,我认为它更像是一个封闭的生态系统,其中如此多的验证通常只是浪费处理器周期。

于 2013-05-14T22:45:55.527 回答