使用特性,可以有效地将元数据或声明性信息与代码(程序集、类型、方法、属性等)相关联。 将特性与程序实体相关联后,可以在运行时使用反射这项技术查询特性。
在 C# 中,通过用方括号 ([]) 将特性名称括起来,并置于应用该特性的实体的声明上方以指定特性。
按照惯例,所有特性名称都以 Attribute 结尾。 但是,面向运行时的几种语言(如 Visual Basic 和 C#)无需指定特性的全名。 例如,若要初始化 System.ObsoleteAttribute,只需将它引用为 Obsolete 即可。
指定方法实现的属性MethodImplAttribute
同步方法:
- [MethodImplAttribute(MethodImplOptions.Synchronized)]标签应用到实例方法,相当于对当前实例加锁 lock(this)。
- [MethodImplAttribute(MethodImplOptions.Synchronized)]标签应用到静态方法,相当于对当前类型加锁。如 WithDraw 是静态方法,就相当于 lock (typeof(Account))
标记不再使用的程序元素ObsoleteAttribute
过时警告:
- [ObsoleteAttribute("过时方法、属性、类等,请使用新xxx方法、属性、类等", false)]
- [ObsoleteAttribute()]或[ObsoleteAttribute]
过时错误:
- [ObsoleteAttribute("过时方法、属性、类等,请使用新xxx方法、属性、类等", true)]
指定属性或事件的说明DescriptionAttribute
DescriptionAttribute更多用于显示枚举变量的中文注释,反射枚举元素的DescriptionAttribute的值显示到界面。