这个问题已经在这里有了答案:
9年前关闭。
通过以下方式定义属性之间有区别吗?
// 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#6之前的版本中,自动属性不允许您指定默认值,并且不存在真正的只读自动属性(即不带 setter/getter 的自动属性)。您能找到的最接近的是带有私有(private)二传手的公共(public)获取者,例如
public string Name { get; private set; }
它并不完全相同,但是在许多情况下都足够接近。关于c# - C#getters,setters声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4923630/