公共访问器与类的公共属性[重复]
Posted
技术标签:
【中文标题】公共访问器与类的公共属性[重复]【英文标题】:Public accessors vs public properties of a class [duplicate] 【发布时间】:2011-11-22 23:06:54 【问题描述】:可能重复:What is the difference between a field and a property in C#
有人可以解释这两个属性之间的差异吗?
public string City get; set;
public string City;
【问题讨论】:
【参考方案1】:第一个是实际属性。第二个只是一个字段。
一般来说,字段应该保留private
并且存储实际数据。属性实际上并不存储任何数据,但它们指向字段。在上面的 auto-property 的情况下,它会在后台自动生成一个隐藏字段,比如 _city 来保存数据。
希望这会有所帮助!
【讨论】:
【参考方案2】:第一个是 CLR 属性,而第二个只是公共字段(不是属性)。
在 WPF 和 Silverlight 中,绑定不适用于公共字段,它仅适用于公共属性。这是我认为的一个主要区别:
//<!--Assume Field is a public field, and Property is a public property-->
<TextBlock Text="Binding Field"/>
<TextBlock Text="Binding Property"/>
第一个不起作用,但第二个会起作用。
【讨论】:
【参考方案3】:正如 mellamokb 所说。第一种是Property,编译器会自动生成访问函数和私有字段,如:
private String _city;
public String City() return _city ;
.....
使用Properties,可以控制_city的访问权限,例如"
public String City()
doXxxFunction();
return _city ;
所以,您应该始终使用该属性,并确保所有字段都是私有的。
【讨论】:
以上是关于公共访问器与类的公共属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章