可能重复:
What is the difference between a field and a property in C#
Should I use public properties and private fields or public fields for data?
有什么区别:
public string varA;
和
public string varA { get; set; }
答案 0 :(得分:17)
公共财产访问者将来会为您提供更大的灵活性。
如果要添加验证以设置值,只需编写非默认设置器即可。您的其他代码都不需要修改。
也可能有理由要用代码替换默认的getter。这可能是公共变量的真正痛苦。
答案 1 :(得分:5)
除了其他答案之外,您还可以使用属性将值设置为只读或甚至仅设置:
public int Item { get; private set; } // read-only outside the class. Can only be set privately.
我也遇到过后来我决定要代理对象的情况,或者添加AOP,这基本上需要属性。
答案 2 :(得分:1)
公共属性通过公开的getter和setter方法访问字段和内部类代码。公共领域直接进入该领域。
使用propertys提供了提供一层抽象和设计的潜力(能够使set访问器受到保护,私有)。
如果指定了属性且没有正文,则由用于存储值的编译器创建基础私有字段。基本上:
private int item = 0;
public int Item {
get { return item; }
set {item = value; }
}
一般来说,我倾向于使用公共暴露变量的属性和私有的字段。如果该字段被多次访问并且速度是关键的设计要求,我可能会考虑使用字段。