个人感觉C#中的特性(Attribute)和Java中的注解(Annotation)的使用有些相似,但是有有些区别。
微软MSDN上对特性的解释如下:特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集、类型、方法、属性等)相关联。特性与程序实体关联后,即可在运行时使用名为“反射”的技术查询特性。
最常见的特性如表示可序列化:
[System.Serializable]
public class SampleClass
{
// Objects of this type can be serialized.
}
下面是MSDN中对特性用途的描述:
当然,和Java一样,我们可以自定义自己的Attribute。通过定义一个特性类,可以创建您自己的自定义特性。该特性类直接或间接地从Attribute 派生,有助于方便快捷地在元数据中标识特性定义。