属性:属性是语法糖,反编译后,是一个私有字段和两个方法
[CompilerGenerated] private string <Name>k__BackingField; [CompilerGenerated] public void set_Name(string value) { this.<Name>k__BackingField = value; } [CompilerGenerated] public string get_Name() { return this.<Name>k__BackingField; }
而且WPF的MVVM里也是在属性的SET里对字段进行监控,同样,我们也可以加上一句:
set{ this.name=value; if(this.name!=this._name) { NameChange();} this._name=this.name; }
而且属性也可以控制外部调用时的功能set/get。所以凡是被外部调用的,都写属性,而内部使用的,就写字段。另外,在序列化时,只会序列化公共的字段或属性。
原文:https://www.cnblogs.com/kafeibuhuizui/p/10619937.html