http://ishare.iask.sina.com.cn/f/37445165.html自己看吧条目1使用属性而不是可访问的数据成员

解决方案 »

  1.   

    http://www.cnblogs.com/David-Huang/archive/2012/07/23/2604473.html
      

  2.   

    这就是这个Item试图要归纳的使用属性的理由:   1.可以对赋值做校验、或者额外的处理   2.可以做线程同步   3.可以使用虚属性、或者抽象属性   4.可以将属性置于interface中   5.可以提供get-only或者set-only版本,甚至可以给读、写以不同的访问权限(C# 2.0支持)   个人感觉3、4条是属性最大的优点,可以填补没有“虚字段”或“抽象字段”的缺憾,在设计组件的时候非常有用,也体现了C#这样的component-oriented语言的精神内涵。 
      

  3.   

    你的程序不需要这样规定。简单地照抄别人的所谓“规范”,其实不一定是好事。不过在.net中,对象的属性和字段的比例超过10:1,甚至许多非常简单的字段也以属性来公布。但是人家.net是多少厂家、多少程序员千锤百炼测试和重构出来的,因此对许多简单的属性都进行了特别复杂的研究和遴选过程,因此这种结果完全可以理解。因此我认为如果有人给初学者规定什么“尽量不要定义公共字段”,我觉得你可以先不要太“有所谓”。因为将公共字段改为功能属性然后重新编译,这很容易。
    其实看不懂什么叫做“保护状态数据完整性”,只不过这句话“看起来好厉害似地”。没有上下文,完全不知道这实在在说什么。实际上这也说明了一些人写书的毛病。真理不可能是抠字眼就能懂得,必须写上一些测试用例、反复前思后想地比较,才能说明白。有的人自己不会反复研究并且写出测试用例,而仅仅喜欢别人传播一个名词儿就能应付一帮比自己更初学的人了,这样就形成了标题党的文化。
    属性就是一种可编程方法,只有这时候这个说明才落实一点。