更新: 2008 年 7 月

属性提供功能强大的方法以将声明信息与 C# 代码(类型、方法、属性等)相关联。属性与程序实体关联后,即可在运行时使用名为“反射”的技术查询属性。有关更多信息,请参见反射(C# 编程指南)

属性以两种形式出现:

  • 一种是在公共语言运行时 (CLR) 中定义的属性。

  • 另一种是可以创建的用于向代码中添加附加信息的自定义属性。此信息可在以后以编程方式检索。

在本例中,属性 TypeAttributes..::.Serializable 用来将特定特性应用于类:

C# 复制代码
[System.Serializable]
public class SampleClass
{
    // Objects of this type can be serialized.
}

属性概述

属性具有以下特点:

  • 属性可向程序中添加元数据。元数据是有关在程序中定义的类型的信息。所有的 .NET 程序集都包含指定的一组元数据,这些元数据描述在程序集中定义的类型和类型成员。可以添加自定义属性,以指定所需的任何附加信息。

  • 程序可以使用反射检查自己的元数据或其他程序内的元数据。有关更多信息,请参见使用反射访问属性(C# 编程指南)

  • MarshallAsare 等属性在 COM 互操作方案中得到了广泛使用。有关更多信息,请参见 System.Runtime.InteropServices..::.MarshalAsAttributeSystem.Runtime.InteropServices..::.StructLayoutAttribute

相关章节

C# 语言规范

有关更多信息,请参见 C# 语言规范中的以下各节:

  • 10.2.1 属性

  • 17 属性

请参见

概念

属性 (Attribute) 概述
特性的常见用途

参考

修订记录

日期

历史记录

原因

2008 年 7 月

更新了概述部分。

内容 Bug 修复