WPF之CLR属性、依赖属性、附加属性

CLR支持静态、实例、抽象和虚属性。属性可以使用任意可访问性修饰符修饰。

属性不能重载。也就是说不能定义名称相同,类型不同的属性。

定义属性时,取决属性的定义,编译器在最后的托管程序集中生成以下两项或三项:

  *)代表属性的get访问器方法的一个方法。仅在属性定义了get访问器方法时生成。
  *) 代表属性的set访问器方法的一个方法。仅在属性定义了set访问器方法时生成。
  *)托管程序集元数据中的一个属性定义。这一项是肯定要生成的。

属性和字段的比较:

  1) 属性可以是只读或只写的,字段访问确总是可读和可写。如果定义一个属性,最好同时为它提供get和set访问器方法。
  2) 一个属性方法可能抛出异常;字段访问永远不会抛出异常。
  3) 属性不能作为out或ref参数传给方法;字段却可以。
  4)属性方法可能花费较长时间执行;字段的访问总是立即完成的。
  5)如果连续多次调用,属性方法每次都可能返回一个不同的值;而字段每次调用都返回相同的值。
  6)属性方法可能造成明显的side effect(指访问属性时,除了单纯的设置或获取属性,还会造成对象状态的改变);字段访问永远不会。
  7)属性方法可能需要额外的内存,或者返回一个不正确的引用,指向不属于对象状态一部分的某个东西,这样一来,对返回对象的修改就作用不到原始对象身上了。相反,查询字段返回的总是正确的引用,它指向的东西保证是原始对象状态的一部分。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值