日期:2014-05-17  浏览次数:20884 次

c#属性
今天看clr via c#时,作者提到:1.属性可以是只读或只写的,而字段总是可读和可写的   2.属性可能抛出异常,字段不会   3属性不能作为ref和out参数传递…4…5....6....既然如此,那么到底何时该用属性呢?

------解决方案--------------------
属性其实本质是一个方法

(1)只有属性才可以数据绑定,字段不可以
(2)可以添加日志、校验等逻辑,可以拦截字段的修改
(3)可以实现懒惰数据加载提高性能
(4)可以通过多个属性修改一个字段,或者将一个字段的数据通过几个属性表现出来(比如位置是一个Point对象,但是你可以将它拆成x y两个属性,比如字体是一个字段,你可以拆出字体、字号等属性,再比如用二进制掩码表示一系列bool值,等等)
(5)可以代替方法。比如说Timer的Start Stop两个方法,被封装成Enabled属性
(6)可以为读写设置不同的访问级别,可以创建只读的属性 
------解决方案--------------------
属性的本质就是一个方法,但是又不同于方法。你对属性的改变相当于调用了方法,属性值的改变可以改变类处理方式。