计算机科学中,特性(英语:attribute)是一种规格,用于定义对象、元素或文件的属性(property),它也常被译作“属性”。也用作指向这样的实例或给实例设置值(即特性可以读写访问)。特性可以更准确地理解为元数据。 特性通常是属性的属性(property of a property)。但在实际使用中,依所讨论的技术领域不同,特性与属性可等价地混为一谈。对象的特性通常是名字与值组成;元素的特性通常是类型或类名;文件的特性通常是文件名与扩展名。
如果一个元素被视作另一实体(例如CUSTOMER
)的一个属性(property,例如CUSTOMER_NAME
),则这个元素自身可以有零或多个特性attributes(或属性properties) ,如CUSTOMER_NAME
可有TYPE = "KINDOFTEXT"
。
C#语言中,特性是元数据,附加于字段或代码块,如程序集(英语:Assembly (programming))(assemblies)、成员变量、数据类型,等价于Java注解。编译器与反射式编程可访问特性。
开发者可以决定把特性作为元数据,专门用于表示与给定应用程序,类和成员有关的,与实例无关的各类信息。开发者也可以决定把一些特性暴露为属性(properties),用作更大的应用程序框架的一部分。
特性可以实现为类(派生自System.Attribute)。可用作CLR服务,比如COM互操作、remoting、序列化,可在运行时查询。
下例在C#中定义特性:
// causes compiler message sayingpublic class C {...} // that C is obsoletepublic class ObsoleteAttribute: Attribute { // class name ends with "Attribute" public string Message{ get; } // but can be used as "Obsolete" public bool IsError{ get; set; } public ObsoleteAttribute() {...} public ObsoleteAttribute(string msg) {...} public ObsoleteAttribute(string msg, bool error) {...}}