Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

FlagsAttribute (Clase)

 

Indica que una enumeración puede considerarse como un campo de bits, es decir, un conjunto de marcas.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)


<SerializableAttribute>
<AttributeUsageAttribute(AttributeTargets.Enum, Inherited := False)>
<ComVisibleAttribute(True)>
Public Class FlagsAttribute
	Inherits Attribute

NombreDescripción
System_CAPS_pubmethodFlagsAttribute()

Inicializa una nueva instancia de la clase FlagsAttribute.

NombreDescripción
System_CAPS_pubpropertyTypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.(Heredado de Attribute.)

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Esta API admite la infraestructura de product y no está pensada para usarse directamente desde su código. Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Heredado de Attribute.)

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object.)

System_CAPS_pubmethodGetHashCode()

Devuelve el código hash de esta instancia.(Heredado de Attribute.)

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual. (Heredado de Object.)

System_CAPS_pubmethodIsDefaultAttribute()

Cuando se invalida en una clase derivada, indica si el valor de esta instancia es el valor predeterminado para la clase derivada.(Heredado de Attribute.)

System_CAPS_pubmethodMatch(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Heredado de Attribute.)

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual. (Heredado de Object.)

System_CAPS_pubmethodToString()

Retorna una cadena que representa al objeto actual. (Heredado de Object.)

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.(Heredado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información del tipo de un objeto, que puede utilizarse para obtener la información del tipo de una interfaz. (Heredado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de tipo de información que suministra un objeto (0 ó 1)

(Heredado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.(Heredado de Attribute.)

Campos de bits generalmente se utilizan para listas de elementos que pueden producirse en combinaciones, mientras que las constantes de enumeración se utilizan generalmente para listas de elementos mutuamente exclusivos.Por lo tanto, los campos de bits están diseñados para combinarse con una operación OR bit a bit para generar valores sin nombre, mientras que no son de constantes enumeradas.Idiomas varían en su uso de campos de bits frente a las constantes.

AttributeUsageAttribute se aplica a esta clase y sus Inherited especifica la propiedad false.Este atributo sólo puede aplicarse a las enumeraciones.

  • Utilice la FlagsAttribute atributo personalizado para una enumeración solo si una operación bit a bit (AND, OR exclusivo o) se pueden realizar en un valor numérico.

  • Definir constantes de enumeración en potencias de dos, es decir, 1, 2, 4, 8 y así sucesivamente.Esto significa que las marcas individuales en constantes de enumeración combinadas no se superpongan.

  • Considere la creación de una constante enumerada para las combinaciones de indicadores utilizadas frecuentemente.Por ejemplo, si una enumeración utilizada para las operaciones de E/S de archivo que contiene las constantes enumeradas Read = 1 y Write = 2, considere la creación de la constante enumerada ReadWrite = Read OR Write, que combina la Read y Write marcas.Además, la operación OR bit a bit utilizada para combinar los indicadores podría considerarse un concepto avanzado en algunas circunstancias que no resulte necesario para tareas sencillas.

  • Tenga cuidado si define un número negativo como constante enumerada del marcador porque muchas de las posiciones de marca se pueden establecer en 1, provocando podría hacer que el código sea confuso y que los errores de codificación.

  • Es una manera cómoda para probar si un marcador se establece en un valor numérico realizar un bit a bit y operación entre el valor numérico y la constante enumerada del indicador, que establece todos los bits del valor numérico de cero que no corresponden a la marca, a continuación, pruebe si el resultado de esa operación es igual a la constante enumerada del indicador.

  • Use None como el nombre de la marca enumerada constante cuyo valor sea cero.No se puede utilizar el None constante enumerada en una operación AND bit a bit para probar un indicador puesto que el resultado siempre es cero.Sin embargo, puede realizar una operación lógica, no una comparación bit a bit entre el valor numérico y el None constante enumerada para determinar si están establecidos los bits del valor numérico.

    Si crea una enumeración de valor en lugar de una enumeración de marcadores, merece la pena crear todavía una None constante enumerada.La razón es que, de forma predeterminada, la memoria utilizada para la enumeración se inicializa en cero por common language runtime.Por lo tanto, si no se define una constante cuyo valor es cero, la enumeración contendrá un valor no válido cuando se crea.

    Si hay un caso predeterminado obvio que la aplicación necesita representar, considere el uso de una constante enumerada cuyo valor sea cero para representar el valor predeterminado.Si no hay ningún caso predeterminado, considere la posibilidad de utilizar una constante enumerada cuyo valor sea cero que significa que el caso de que no está representado por cualquiera de las demás constantes enumeradas.

  • No defina un valor de enumeración únicamente para reflejar el estado de la propia enumeración.Por ejemplo, no defina una constante enumerada que meramente Marque el final de la enumeración.Si necesita determinar el último valor de la enumeración, compruebe ese valor explícitamente.Además, puede realizar una comprobación de intervalo para la constante enumerada primera y última si son válidos todos los valores dentro del intervalo.

  • No especifique constantes enumeradas que están reservadas para uso futuro.

  • Al definir un método o propiedad que toma una constante enumerada como un valor, considere la posibilidad de validar el valor.La razón es que puede convertir un valor numérico para el tipo de enumeración incluso si dicho valor numérico no está definido en la enumeración.

En el ejemplo de código siguiente se muestra el uso de la FlagsAttribute de atributo y se muestra el efecto en el ToString método de utilizar FlagsAttribute en un Enum declaración.

Module Example
   ' Define an Enum without FlagsAttribute.
   Enum SingleHue As Short
      None = 0
      Black = 1
      Red = 2
      Green = 4
      Blue = 8
   End Enum

   ' Define an Enum with FlagsAttribute.
   <FlagsAttribute> 
   Enum MultiHue As Short
      None = 0
      Black = 1
      Red = 2
      Green = 4
      Blue = 8
   End Enum

   Sub Main()
      ' Display all possible combinations of values.
      Console.WriteLine(
           "All possible combinations of values without FlagsAttribute:")
      For val As Integer = 0 To 16
         Console.WriteLine("{0,3} - {1:G}", val, CType(val, SingleHue))
     Next 
     Console.WriteLine()

     ' Display all combinations of values, and invalid values.
     Console.WriteLine( 
          "All possible combinations of values with FlagsAttribute:")
     For val As Integer = 0 To 16
        Console.WriteLine( "{0,3} - {1:G}", val, CType(val, MultiHue))
     Next 
   End Sub 
End Module 
' The example displays the following output:
'       All possible combinations of values without FlagsAttribute:
'         0 - None
'         1 - Black
'         2 - Red
'         3 - 3
'         4 - Green
'         5 - 5
'         6 - 6
'         7 - 7
'         8 - Blue
'         9 - 9
'        10 - 10
'        11 - 11
'        12 - 12
'        13 - 13
'        14 - 14
'        15 - 15
'        16 - 16
'       
'       All possible combinations of values with FlagsAttribute:
'         0 - None
'         1 - Black
'         2 - Red
'         3 - Black, Red
'         4 - Green
'         5 - Black, Green
'         6 - Red, Green
'         7 - Black, Red, Green
'         8 - Blue
'         9 - Black, Blue
'        10 - Red, Blue
'        11 - Black, Red, Blue
'        12 - Green, Blue
'        13 - Black, Green, Blue
'        14 - Red, Green, Blue
'        15 - Black, Red, Green, Blue
'        16 - 16

Universal Windows Platform
Disponible desde 4.5
.NET Framework
Disponible desde 1.1
Portable Class Library
Compatible con: portable .NET platforms
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Volver al principio
Mostrar: