特性

特性(Attribute)可应用于类、字段、属性、方法以及程序集或模块,用来给它们提供一些附加的声明性信息。特性可用于运行时,也可用于设计时。你可以把它理解为对类、字段、属性、方法等进行的批注或解说,在编译有特性的程序时编译器会读取这个特性,然后根据特性去进行编译 。

特性

1)功能性信息:如[Serializable]加在类前表示该类可被串行化。
[Serializable]
public class HumanProperty

2)提示性信息:如[Obsolete]表示该方法已经过时,提醒程序员使用新的替代函数。
[Obsolete("Use another method : Average(), instead!", true)]
public virtual void CalcAverage(int speed)

3)限定性信息:如[Conditional("DEBUG")]表示下面的方法只有在调试模式下才有效。
[Conditional("DEBUG")]
public  void  UnitTest()

4)描述性信息:如[Description]对所指对象进行详细描述。

 

原理

 Attribute 本质上就是一个类,它在所附着的目标对象上最终实例化,与ConditionalAttribute 相关的是一组C# 宏,它们看起来与C的宏别无二致,位置必须出现在所有C# 代码之前。顾名思义,ConditionalAttribute 是用来判断条件的,凡被ConditionalAttribute (或Conditional附着了的方法,只有满足了条件才会执行。

[被编译器编译进程序集的元数据里,运行时,从元数据里提取这些附加信息来决策程序的执行]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屠变恶龙之人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值