Compartir a través de


Utilizar atributos (Guía de programación de C#)

Actualización: noviembre 2007

Los atributos se pueden colocar en la mayoría de las declaraciones, aunque un determinado atributo podría restringir los tipos de declaraciones en las que es válido. Desde el punto de vista sintáctico, un atributo se especifica colocando el nombre del atributo, encerrado entre corchetes, delante de la declaración de la entidad a la que se aplica. Por ejemplo, un método con el atributo DllImport se declara así:

[System.Runtime.InteropServices.DllImport("user32.dll")]
extern static void SampleMethod();

Para obtener más información, vea DllImportAttribute (Clase).

Muchos atributos tienen parámetros, que pueden ser posicionales, sin nombre, o con nombre. Los parámetros posicionales se deben especificar en un determinado orden y no se pueden omitir; los parámetros con nombre son opcionales y se pueden especificar en cualquier orden. Los parámetros posicionales se especifican en primer lugar. Por ejemplo, estos tres atributos son equivalentes:

[DllImport("user32.dll")]
[DllImport("user32.dll", SetLastError=false, ExactSpelling=false)]
[DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]

El primer parámetro, el nombre de la DLL, es posicional y va siempre en primer lugar; los otros dos son parámetros con nombre. En este caso, ambos parámetros con nombre se establecen como falso de forma predeterminada, por lo que se pueden omitir. Consulte la documentación del atributo individual para obtener información sobre los valores de parámetro predeterminados.

Una declaración puede incluir varios atributos, bien de forma separada, bien dentro del mismo grupo de corchetes:

void MethodA([In][Out] ref double x) { }
void MethodB([Out][In] ref double x) { }
void MethodC([In, Out] ref double x) { }

Algunos atributos se pueden especificar varias veces para una entidad dada. Un ejemplo de este tipo de atributos multiuso es Conditional:

[Conditional("DEBUG"), Conditional("TEST1")]
void TraceMethod()
{
    // ...
}
Nota:

Por convención, todos los nombres de atributo finalizan con la palabra "Attribute" para distinguirlos de otros elementos de .NET Framework. No obstante, no tiene que especificar el sufijo de atributo cuando utiliza atributos en el código. Por ejemplo, [DllImport] equivale a [DllImportAttribute], pero DllImportAttribute es el nombre real del atributo en .NET Framework.

Vea también

Conceptos

Guía de programación de C#

Referencia

Reflexión (Guía de programación de C#)

Atributos (Guía de programación de C#)

Eliminar la ambigüedad de los destinos de atributos (Guía de programación de C#)

Crear atributos personalizados (Guía de programación de C#)

Acceso a atributos mediante reflexión (Guía de programación de C#)

Attribute

System.Reflection