Possible Duplicates:
Why use getters and setters?
C# 3.0 Auto-Properties - useful or not?
用下面的方式定义属性有区别吗-
// private, with getter & setter
private string fName;
public string Name
{
get { return this.fName }
set { this.fName = value }
}
// define as a Property
public string Name { get; set;}
据我所知,这只是一种风格偏好。我错过了什么吗?
区别:
- 第二种形式只能使用 C# 3 或更高版本的编译器编译
- 第二种形式不允许任何代码(即使在同一个类中)直接访问该字段,因为真实字段有一个“不可说的名字”
第二个版本是所谓的自动实现的属性(简称“自动属性”)。它们是在 C# 3 中引入的。如果您只是编写看起来像第一个版本的代码——即不涉及任何逻辑——那么自动属性就很棒。您始终可以稍后通过将逻辑转换为第一种形式来添加逻辑。在源代码和二进制兼容性方面,您的所有代码都将与该更改兼容。
请注意,在 C# 6 之前的版本中,自动属性不允许允许您指定默认值,并且不存在真正只读的自动属性(即没有 getter 的自动属性) .最接近的是带有私有(private) setter 的公共(public) getter,例如
public string Name { get; private set; }
虽然不完全相同,但在许多情况下已经足够接近了。