Public accessors vs public properties of a class
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is the difference between a field and a property in C#
有人能解释一下这两种属性之间的区别吗?
1 2 | public string City { get; set; } public string City; |
第一个是实际属性。第二个只是一个场。
一般来说,字段应该保存在cx1〔0〕中,并且存储实际数据。属性实际上不存储任何数据,但它们指向字段。在上述auto属性的情况下,它将自动生成一个隐藏字段,比如后台的city来保存数据。
希望这有帮助!
第一个是clr属性,而第二个只是公共字段(不是属性)。
在WPF和Silverlight中,绑定不与公共字段一起工作,它只与公共属性一起工作。这是我认为的一个主要区别:
1 2 3 | //<!--Assume Field is a public field, and Property is a public property--> <TextBlock Text="{Binding Field}"/> <TextBlock Text="{Binding Property}"/> |
第一个不行,但第二个不行。
正如梅拉莫克所说。第一种类型是属性,编译器将自动生成访问函数和私有字段,如:
1 2 3 | private String _city; public String City(){ return _city ;} ..... |
使用属性,您可以控制"城市"的访问,例如"
1 2 3 4 | public String City(){ doXxxFunction(); return _city ; } |
因此,您应该始终使用该属性,并确保所有字段都是私有的。