2009-04-21 30 views
12

He visto una gran cantidad de programas C# que usan el [], por ejemplo [STAThread] y luego sigue el código. Otro ejemplo clásico es [DLLImport].Significado del texto entre corchetes

Sé lo que significa STAThread, pero mi pregunta es cuál es la importancia de los corchetes, en esencia, ¿qué le dicen al compilador?

Respuesta

16

Es un atributo. Los atributos son una forma de metadatos que puede adjuntar a varios elementos de código: clases, métodos, ensamblados, etc.

Algunos atributos tienen un significado especial para el compilador C#, por ejemplo, el [Serializable] probablemente le dice al compilador que emita algún código que pueda serializar una instancia de la clase (digo 'probablemente' ya que no conozco el funcionamiento interno del compilador de C#).

También puede crear sus propios atributos (heredando System.Attribute). Utilizando la reflexión, en el tiempo de ejecución podría extraer información de los atributos.

Un ejemplo simple sería crear un atributo para especificar qué tipo de campo de entrada usar en un formulario HTML al mostrar la propiedad de un objeto.

Algunos enlaces:

2

Estos son attributes.

Los atributos tienen muchos usos: [Obsolete] marca un método como obsoleto y el compilador le avisará. Otros como [DebuggerNonUserCode] no le dicen nada al compilador y están ahí para que el depurador sepa que el código en el método marcado se genera automáticamente.

También puede crear sus propios atributos y usarlos para marcar cualquier tipo de metadato. Por ejemplo, el objeto Cliente podría tener un atributo [MarketingInformation("Customer is rich! Milk him good!")].

1

Son atributos, que añaden metadatos a lo que va a decorar.

1

Estas tesis se llaman atributos de código. Los atributos se usan para marcar código con propiedades que generalmente están diseñadas para especificar el comportamiento durante la ejecución. Se usan comúnmente para marcar métodos, propiedades y parámetros. Durante la ejecución de su código, se ejecutará algo llamado "reflexión" para examinar el código. Reflection le dice al compilador que observe y obedezca las instrucciones especificadas por usted como los atributos de marcado del codificador contra el código.

Un buen ejemplo sería el atributo [Serializable]. Este atributo, cuando está marcado encima de una clase, le indica al compilador que puede ser serializado con el propósito de persistir en la instancia de la clase o para transmitir a través de un medio como los servicios web SOAP.

Ver el artículo siguiente: link text

Cuestiones relacionadas