方括号之间的文本含义

我见过很多使用[]的C#程序,例如[STAThread] ,然后代码如下。 另一个经典的例子是[DLLImport]

我知道STAThread意思,但我的问题是方括号的意义是什么,基本上它们告诉编译器的是什么?

这是一个属性。 属性是元数据的一种forms,您可以将其附加到各种代码元素:类,方法,程序集等。

一些属性对C#编译器有特殊意义,例如[Serializable]可能告诉编译器发出一些可以序列化类实例的代码(我说’可能’,因为我不知道C#编译器的内部工作原理)。

您还可以创建自己的属性(通过inheritanceSystem.Attribute )。 然后使用reflection,您可以在运行时从属性中提取信息。

一个简单的例子是创建一个属性,以指定在显示对象属性时在HTML表单中使用哪种输入字段。

一些链接:

这些是属性 。

属性有很多用途 – [Obsolete]将方法标记为过时,编译器会警告您。 像[DebuggerNonUserCode]这样的其他人对编译器一无所知,让调试器知道标记方法中的代码是自动生成的。

您还可以创建自己的属性并使用它们来标记任何类型的元数据。 例如,您的Customer对象可能具有一个属性[MarketingInformation("Customer is rich! Milk him good!")].

有关.Net中的属性的信息,请参阅此处:

http://msdn.microsoft.com/en-us/library/5x6cd29c.aspx

它们是属性,可以将元数据添加到它们正在装饰的任何内容中。

这些被称为代码属性。 属性用于标记具有属性的代码,这些属性通常用于指定执行期间的行为。 它们通常用于标记方法,属性和参数。 在执行代码期间,将执行称为“reflection”的操作来检查代码。 Reflection告诉编译器观察并遵守您指定的任何指令作为编码器标记代码的属性。

一个很好的例子是[Serializable]属性。 当在类上方标记时,该属性向编译器指示它可以被序列化以便持久化类实例或者通过诸如SOAP web服务之类的介质进行传输。

请参阅以下文章: 链接文本