Instrucción Const (Visual Basic)

Actualización: noviembre 2007

Declara y define una o más constantes.

[ <attributelist> ] [ accessmodifier ] [ Shadows ] 
Const constantlist

Partes

  • attributelist
    Opcional. Lista de atributos que se aplican a todas las constantes declaradas en esta instrucción. Vea la Lista de atributos en corchetes angulares ("<" y ">").

  • accessmodifier
    Opcional. Utilícelo para especificar qué código puede tener acceso a estas constantes. Puede ser Public (Visual Basic), Protected (Visual Basic), Friend (Visual Basic), Protected Friend o Private (Visual Basic).

  • Shadows
    Opcional. Utilícelo para volver a declarar y ocultar un elemento de programación de una clase base. Vea Shadows.

  • constantlist
    Obligatorio. Lista de constantes de miembros que se declaran en esta instrucción.

    constant[ , constant ... ]

    Cada constant tiene la sintaxis y las partes siguientes:

    constantname[ As datatype ] = initializer

    Parte

    Descripción

    constantname

    Obligatorio. Nombre de la constante. Vea Nombres de elementos declarados.

    datatype

    Obligatorio si Option Strict es On. Tipo de datos de la constante.

    initializer

    Obligatorio. Expresión que se evalúa en tiempo de compilación y se asigna a la constante.

Comentarios

Si en su aplicación tiene un valor que nunca cambia, puede definir una constante con nombre y usarla en lugar de un valor literal. Un nombre es más fácil de recordar que un valor. Puede definir la constante sólo una vez y utilizarla en muchos lugares de su código. Si en una versión posterior necesita volver a definir el valor, la instrucción Const es el único lugar donde es necesario realizar el cambio.

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

Las constantes locales (contenidas en un procedimiento) tienen un valor predeterminado de acceso público y no puede utilizar ningún modificador de acceso en ellas. Las constantes de clases y miembros de módulo (externas a cualquier procedimiento) tienen como valor predeterminado el acceso privado, y las constantes de miembro de estructura tienen como valor predeterminado el acceso público. Puede ajustar sus niveles de acceso con los modificadores de acceso.

Reglas

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

    Una constante declarada en el nivel de procedimiento es una constante local; es local al procedimiento o bloque que la declara.

  • Atributos. Sólo puede aplicar los atributos a las constantes de miembro, no a las constantes locales. Un atributo aporta información a los metadatos del ensamblado, que no son significativos para el almacenamiento temporal como constantes locales.

  • Modificadores. De manera predeterminada, todas las constantes son Shared, Static y ReadOnly. No puede utilizar ninguna de estas palabras clave al declarar una constante.

    En el nivel de procedimiento, no puede utilizar Shadows ni ningún modificador de acceso para declarar constantes locales.

  • Varias constantes. Puede declarar varias constantes en la misma instrucción de declaración, especificando la parte constantname para cada una. Las constantes múltiples se separan por comas.

Reglas de tipos de datos

  • Tipos de datos. La instrucción Const puede declarar el tipo de datos de una variable. Puede especificar cualquier tipo de datos o el nombre de una enumeración.

  • Tipo predeterminado. Si no especifica datatype, la constante toma el tipo de datos de initializer. Si especifica datatype e initializer, el tipo de datos de initializer debe ser convertible al datatype. Si ni datatype ni initializer están presentes, el tipo de datos utiliza Object de manera predeterminada.

  • Distintos tipos. Puede especificar distintos tipos de datos para las diferentes constantes utilizando una cláusula As independiente para cada variable que declare. Sin embargo, no puede declarar varias constantes para que sean del mismo tipo utilizando una cláusula As común.

  • Inicialización. Debe inicializar el valor de cada constante en constantlist. Utilice initializer para proporcionar una expresión que se va a asignar a la constante. La expresión puede ser cualquier combinación de literales, otras constantes que ya estén definidas y miembros de enumeración que ya se hayan definido. 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

  • Ámbito. A las constantes locales sólo se puede tener acceso desde dentro de sus procedimientos o bloques. Se puede tener acceso a las constantes de miembro desde cualquier lugar del interior de sus clases, estructuras o módulos.

  • Calificación. El código fuera de una clase, estructura o módulo debe calificar el nombre de una constante de miembro con el nombre de esa clase, estructura o módulo. El código situado fuera de un procedimiento o bloque no puede hacer referencia a ninguna constante local incluida dentro de ese procedimiento o bloque.

Ejemplo

En el ejemplo siguiente se utiliza la instrucción Const para declarar constantes que se utilicen en lugar de valores literales.

' The following statements declare constants. 
Const maximum As Long = 459
Public Const helpString As String = "HELP"
Private Const startValue As Integer = 5

Si define una constante con el tipo de datos Object, el compilador de Visual Basic le asigna el tipo de initializer, en lugar de Object. En el ejemplo siguiente, la naturalLogBase constante tiene el tipo Decimal en tiempo de ejecución.

Const naturalLogBase As Object = CDec(2.7182818284)
MsgBox("Run-time type of constant naturalLogBase is " & _
    naturalLogBase.GetType.ToString())

El ejemplo anterior utiliza el método ToString del objeto Type devuelto por el GetType (Operador), porque Type no se puede convertir a String utilizando CStr.

Vea también

Conceptos

Conversiones implícitas y explícitas

Constantes y enumeraciones intrínsecas

Referencia

Instrucción Enum (Visual Basic)

#Const (Directiva)

Instrucción Dim (Visual Basic)

Instrucción ReDim (Visual Basic)

Funciones de conversión de tipos

Asc, AscW (Funciones)

Otros recursos

Constantes y enumeraciones en Visual Basic