一、特性的基本概述
Attribute(特性),公共语言运行时允许添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。
二、特性的应用
(1)在.NET中,Attribute被用来处理多种问题,比如序列化、程序的安全特征、防止即时编译器对程序代码进行优化从而代码容易调试等等。
定制的特性本质上是为一个类的元素上去添加附加信息,并在运行其通过反射得到该附加信息(在使用数据实体对象时经常用到)
(2)Attribute作为编译器的指令时的应用:
Conditional:起条件编译的作用,只有满足条件,才允许编译器对它的代码进行编译。一般在程序调试的时候使用。
DllImport:用来标记非.NET的函数,表明该方法在一个外部的DLL中定义。
Obsolete:这个属性用来标记当前的方法已经被废弃,不再使用了。
例:如果在一个程序元素前面声明一个Attribute,那么就表示这个Attribute被施加到该元素上,下面的代码:
[DllImport]施加到MessageBox函数上。

[Conditional]施加到DisplayRuntimeMessage方法。
[Obsolete]施加到DisplayDebugMessage方法上
三、补充说明
Attribute就是一个类,所以DllImport也是一个类,Attribute类是在编译的时候被实例化的,而不是像通常的类那样在运行时候才实例化。
Attribute实例化的时候根据该Attribute类的设计可以带参数,也可以不带参数:
DllImport就带有"User32.dll"的参数。
Conditional对满足参数的定义条件的代码进行编译,如果没有定义DEBUG,那么该方法将不被编译。
Obsolete表明了DispalyDebugMessage方法已经过时了,它有一个更好的方法来代替它,当我们的程序调用一个声明了Obsolete的方法时,那么编译器会给出信息。