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

时间:2011-06-30 23:25:46

标签: c# properties field

  

可能重复:
  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; }

3 个答案:

答案 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; }
}

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