码迷,mamicode.com
首页 > 其他好文 > 详细

自动属性

时间:2014-11-22 23:21:21      阅读:388      评论:0      收藏:0      [点我收藏+]

标签:自动属性

2.0的时候我们定义属性要这么定义
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
到3.0的时候 新加了自动属性可以这么定义了
public int Age {get;set;}
public int Age {get;private set;}

最终生成的il代码都是一样的,上面的事情编译器帮做了。

CLR说,自动实现的属性(AIP),它是为了封装一个支持字段而创建的一个属性。
不能用,尽量不用
第一、字段属性可以包含初始化,而AIP必须在构造中显式初始化每个AIP
第二、AIP编译时会每次重新生成新的名字
第三、调试时不好加断点
还有,生成AIP必然是可读可写,可控性不高!!!

自动属性定义了一个你不能访问到的内部私有变量,然后用这个内部变量来存储和读取你使用的值,跟你自己定义一个内部私有变量实现属性的访问是一样的,区别在于不用写那么多代码了,不用自己定义私有变量了。这种写法无法实现业务需求,比如赋值的时候要求不能小于10,那就无法实现了。

自动属性

标签:自动属性

原文地址:http://net5x.blog.51cto.com/7900145/1581261

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!