老实说,公共变量和公共财产访问者之间有什么区别?

可能重复:
C#中的字段和属性有什么区别?
我应该使用公共属性和私有字段或公共字段来获取数据吗?

有什么区别:

public string varA; 

 public string varA { get; set; } 

公共财产访问器为您提供更大的灵活性。

如果要添加validation来设置值,只需编写一个非默认的setter。 您的其他代码都不必修改。

也可能有理由要用代码替换默认的getter。 这可能是公共变量的真正痛苦。

除了其他答案之外,您还可以使用属性将值设置为只读或甚至仅设置:

 public int Item { get; private set; } // read-only outside the class. Can only be set privately. 

我也遇到过后来我决定要代理一个对象的情况,或者添加AOP,这基本上需要属性。

公共属性通过公开的getter和setter方法访问字段和内部类代码。 公共领域直接访问该字段。

使用propertys提供了提供一层抽象和设计(使set访问器受保护,私有的能力)的潜力。

如果指定了属性且没有正文,则用于存储该值的编译器将创建基础私有字段。 实质上:

 private int item = 0; public int Item { get { return item; } set {item = value; } } 

一般来说,我倾向于使用公共暴露变量的属性和私有的字段。 如果该字段被多次访问并且速度是关键的设计要求,我可能会考虑使用字段。