公共存取VS类的公共属性
问题描述:
可能重复:
What is the difference between a field and a property in C#公共存取VS类的公共属性
有人能解释,如果之探源任何这两个属性之间?
public string City { get; set; }
public string City;
答
第一个是一个实际的属性。第二个只是一个领域。
一般来说,应该保留字段private
,并且是存储实际数据的东西。属性实际上并不存储任何数据,但它们指向字段。在上面的自动属性的情况下,它会自动生成一个隐藏的字段,如后面的_city来保存数据。
希望这会有所帮助!
答
第一个是CLR属性,第二个只是公共领域(不是属性)。
在WPF和Silverlight中,绑定不适用于公共属性,它只能与公共属性一起使用。这是我认为的一个主要区别:
//<!--Assume Field is a public field, and Property is a public property-->
<TextBlock Text="{Binding Field}"/>
<TextBlock Text="{Binding Property}"/>
第一个不会工作,但第二个会工作。作为mellamokb说:
答
。第一类是属性,编译器会自动生成访问功能和私人领域,如:
private String _city;
public String City(){ return _city ;}
.....
使用属性,你可以控制_City的访问,例如”
public String City(){
doXxxFunction();
return _city ;
}
所以,你应该始终使用财产,并确保所有领域是私人的。