Instrucción Enum (Visual Basic)

Actualización: noviembre 2007

Declara una enumeración y define los valores de sus miembros.

[ <attribute list> ] [ access modifier ]  [ Shadows ] 
Enum enumeration name [ As data type ] 
      member list
End Enum

Partes

  • attribute list
    Opcional. Lista de atributos que se aplican a esta enumeración. Debe incluir la Lista de atributos entre corchetes angulares ("<" y ">").

  • access modifier
    Opcional. Especifica qué código puede tener acceso a esta enumeración. Puede ser una de las siguientes:

    Puede especificar ProtectedFriend para permitir el acceso desde el código dentro de la clase de la enumeración o desde el mismo ensamblado.

  • Shadows
    Opcional. Especifica que esta enumeración vuelve a declarar y ocultar un elemento de programación denominado de forma idéntica, o un conjunto de elementos sobrecargados, en una clase base. Sólo puede especificar Shadows en la propia enumeración y no en ninguno de sus miembros.

  • enumeration name
    Requerido. Nombre de la enumeración. Para obtener más información sobre qué nombres son válidos, vea Nombres de elementos declarados.

  • data type
    Requerido si OptionStrict es On. Tipos de datos de la enumeración y de todos sus miembros.

  • member list
    Requerido. Lista de constantes de miembros que se declara en esta instrucción. Varios miembros aparecen en líneas de código fuente individuales.

    Cada member tiene la sintaxis y las partes siguientes: [<attribute list>] member name [ = initializer ]

    Parte

    Description

    member name

    Requerido. Nombre de este miembro.

    initializer

    Opcional. Expresión que se evalúa en tiempo de compilación y se asigna a este miembro.

  • EndEnum
    Termina el bloque Enum.

Comentarios

Si tiene un conjunto de valores inalterables que se relacionan lógicamente entre sí, puede definirlos juntos en una enumeración. Esto proporciona nombres descriptivos para la enumeración y sus miembros que son más fáciles de recordar que sus valores. Puede utilizar los miembros de la enumeración en muchos lugares de su código. Mejora asimismo la legibilidad de su código porque todos los valores relacionados utilizan el mismo nombre de enumeración.

Sólo se puede utilizar Enum en el nivel de espacio de nombres o de módulo. Esto significa que el contexto de la declaración de una enumeración debe ser un archivo de código fuente, espacio de nombres, clase, estructura, módulo o interfaz, y no un procedimiento. Para obtener más información, vea Contextos de declaración y niveles de acceso predeterminados.

La instrucción Enum puede declarar el tipo de datos de una enumeración. Cada miembro toma el tipo de datos de la enumeración. Puede especificar Byte, Integer, Long, SByte, Short, UInteger, ULong o UShort.

Si no especifica un initializer para un miembro, Visual Basic lo inicializa a cero (si es el primer member de una member list) o a un valor superior en uno al del member inmediatamente anterior.

Las enumeraciones de clases, estructuras, módulos y miembros de interfaz tienen como valor predeterminado el acceso público. Puede ajustar sus niveles de acceso con los modificadores de acceso. Las enumeraciones de miembros de espacio de nombres tienen como valor predeterminado el acceso de amigo. Puede ajustar sus niveles de acceso a público, pero no a privado o protegido. Para obtener más información, vea las reglas incluidas en Niveles de acceso en Visual Basic.

  • Contexto de la declaración. Una enumeración declarada en el nivel de módulo, fuera de cualquier procedimiento, es una enumeración de miembros; se trata de un miembro de la clase, estructura, módulo o interfaz que la declara.

    Una enumeración declarada en el nivel de espacio de nombres, fuera de cualquier clase, estructura, módulo o interfaz, es un miembro sólo del espacio de nombres en el que aparece.

  • Atributos. Puede aplicar los atributos a una enumeración en conjunto, pero no a sus miembros individualmente. Un atributo proporciona información a los metadatos del ensamblado.

  • Modificadores. De forma predeterminada, todas las enumeraciones son tipos y sus campos, constantes. Por consiguiente no se pueden utilizar las palabras clave Shared, Static y ReadOnly al declarar una enumeración o sus miembros.

Reglas de tipos de datos

  • Tipo predeterminado. Si no especifica data type para la enumeración, cada miembro toma el tipo de datos de initializer. Si se especifica data type e initializer, el tipo de datos de initializer debe ser convertible a data type. Si ni data type ni initializer están presentes, el tipo de datos utiliza Integer de manera predeterminada.

  • Inicialización. La instrucción Enum puede inicializar el contenido de los miembros seleccionados en member list. Utilice initializer para proporcionar una expresión que se va a asignar al miembro.

    La expresión proporcionada en initializer puede ser cualquier combinación de literal, otras constantes ya definidas, y miembros de la enumeración ya definidos, incluso un miembro anterior de esta enumeración. Puede utilizar operadores aritméticos y lógicos para combinar estos elementos.

    No puede utilizar variables ni funciones en initializer. No obstante, pueden utilizarse palabras clave de conversión como CByte y CShort. También puede utilizar AscW si lo llama con un argumento constante String o Char, puesto que puede evaluarse en tiempo de compilación.

Comportamiento

  • Nivel de acceso. Todos los miembros de la enumeración tienen acceso público y no pueden utilizar ningún modificador de acceso. Sin embargo, si la propia enumeración tiene un nivel de acceso más restringido, tiene prioridad el nivel de acceso a la enumeración especificado.

  • Ámbito. Se puede tener acceso a las enumeraciones de miembros desde cualquier lugar dentro de su clase, estructura, módulo o interfaz. Las enumeraciones de miembros de espacio de nombres son accesibles desde cualquier código dentro de ese espacio de nombres.

  • Calificación. El código fuera de una clase, estructura o módulo debe calificar el nombre de una enumeración de miembros con el nombre de esa clase, estructura o módulo.

  • **Valores no válidos.**Si el valor de un miembro rebasa el intervalo permitido para el tipo de datos subyacente o si se inicializa un miembro al valor máximo permitido por dicho tipo, el compilador notifica un error.

Las variables de enumeración son variables declaradas para ser del tipo Enum. Declarar una variable de este modo le ayudará a controlar los valores que le asigne. Sin embargo, todavía puede asignar un valor que no sea un miembro de la enumeración, siempre que su tipo de datos pueda convertirse en el tipo de datos de la enumeración. Esto es útil cuando la enumeración es un campo de indicador y se asigna una combinación de indicadores a la variable de enumeración. El ejemplo siguiente muestra una asignación de varios indicadores a una variable de enumeración.

Enum filePermissions
    create = 1
    read = 2
    write = 4
    delete = 8
End Enum
Dim file1Perm As filePermissions
file1Perm = filePermissions.create Or filePermissions.read

Deben calificarse todas las referencias a un miembro de enumeración, ya sea con el nombre de una variable de enumeración o con el nombre de la propia enumeración. Por ejemplo, en el ejemplo anterior, puede hacer referencia al primer miembro como filePermissions.create, pero no como create.

Ejemplo

El ejemplo siguiente utiliza la instrucción Enum para definir un conjunto relacionado de valores constantes con nombre. En este caso, los valores son colores que se pueden elegir a fin de diseñar formularios de entrada de datos para una base de datos.

Public Enum InterfaceColors
    MistyRose = &HE1E4FF&
    SlateGray = &H908070&
    DodgerBlue = &HFF901E&
    DeepSkyBlue = &HFFBF00&
    SpringGreen = &H7FFF00&
    ForestGreen = &H228B22&
    Goldenrod = &H20A5DA&
    Firebrick = &H2222B2&
End Enum

El ejemplo siguiente muestra valores que incluyen números positivos y negativos.

Enum SecurityLevel
    IllegalEntry = -1
    MinimumSecurity = 0
    MaximumSecurity = 1
End Enum

Vea también

Conceptos

Conversiones implícitas y explícitas

Constantes y enumeraciones intrínsecas

Referencia

Instrucción Const (Visual Basic)

Instrucción Dim (Visual Basic)

Funciones de conversión de tipos

Asc, AscW (Funciones)

Otros recursos

Constantes y enumeraciones en Visual Basic