星空网 > 软件开发 > ASP.net

编写高质量代码改善C#程序的157个建议——建议91:可见字段应该重构为属性

建议91:可见字段应该重构为属性

字段和属性的本质区别就是属性是方法。

查看下面这个Person类型:

  class Person  {    public string Name { get; set; }  }

经过编译器编译后,针对属性Name实际会生成一个private字段和两个public方法:

[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;}

可见,属性实际上是编译器给我们的语法糖。

属性比字段具有以下的优势:

1)可以为属性添加代码。正是因为属性是方法,所以可以在方法内对设置或获取属性的过程进行更多精细化控制。如:为属性添加NameChanged事件等。单凭字段是完成不了这样的功能的。

2)可以让属性支持线程安全。要让属性变成线程安全的可以让类型自身去实现。而要让字段支持线程安全,就只能靠调用者本身来实现了。

3)属性得到VS编译器的支持,还得到了实现自动属性这种功能。自动属性的特点在LINQ中得到了广泛应用,尤其是在匿名类中,它只能实现只读的自动属性,而不支持字段。

4)从设计角度,也就是面向对象角度来看,公开的字段也应该使用属性。改变字段的状态,类型不会被通知到;而改变属性的值,类型支持则会被通知。

综上,如果一个类型存在一个可见字段,那么他应该被重构为属性。当然,如果某个属性仅仅对内部可见,而不涉及以上4点内容,则建议使用字段。

 

 

转自:《编写高质量代码改善C#程序的157个建议》陆敏技




原标题:编写高质量代码改善C#程序的157个建议——建议91:可见字段应该重构为属性

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

6.87亿!Hot Sale惊艳收官,亚马逊会员日强势登场:https://www.kjdsnews.com/a/1512243.html
跨境周报|亚马逊法案已生效!Temu商品被召回?:https://www.kjdsnews.com/a/1512244.html
“全球五日达”后再降价,AliExpress狂搞物流建设:https://www.kjdsnews.com/a/1512245.html
行业TOP1,出货量增长717%,国产AR眼镜XREAL畅销海外!:https://www.kjdsnews.com/a/1512246.html
eBay英国海外仓服务有哪些?:https://www.kjdsnews.com/a/1512247.html
中国Eblke品牌如何抢占美国市场?本土化营销是关键!:https://www.kjdsnews.com/a/1512248.html
温州旧货市场有玻璃柜卖吗?:https://www.vstour.cn/a/411246.html
如何用摄影作品表现“芳草鲜美,落英缤纷”的:https://www.vstour.cn/a/411247.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流