Instrucción Const (Visual Basic)
Declara y define una o varias constantes.
Sintaxis
[ <attributelist> ] [ accessmodifier ] [ Shadows ]
Const constantlist
Partes
attributelist
Opcional. Lista de atributos que se aplican a todas las constantes declaradas en esta instrucción. Consulte Lista de atributos entre corchetes angulares ("<
" y ">
").
accessmodifier
Opcional. Úselo para especificar qué código puede acceder a estas constantes. Puede ser Public, Protected, Friend, Protected Friend, Private o Private Protected.
Shadows
Opcional. Úselo para volver a declarar y ocultar un elemento de programación en una clase base. Consulte Shadows.
constantlist
Necesario. Lista de constantes 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 |
Necesario. Nombre de la constante. Vea Declared Element Names. |
datatype |
Obligatorio si Option Strict es On . Tipo de datos de la constante. |
initializer |
Necesario. Expresión que se evalúa en el momento de la compilación y se asigna a la constante. |
Comentarios
Si tiene un valor que nunca cambia en la aplicación, 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 solo una sola vez y usarla en muchos lugares del código. Si en una versión posterior, necesita volver a definir el valor, la instrucción Const
es el único lugar en el que necesita realizar un cambio.
Solo puede usar Const
en el nivel de procedimiento o de módulo. Esto significa que el contexto de la declaración de una variable debe ser una clase, una estructura, un módulo, un procedimiento o un bloque y no puede ser un archivo de origen, un espacio de nombres ni una interfaz. Para obtener más información, vea Declaration Contexts and Default Access Levels (Contextos de declaración y niveles de acceso predeterminados).
Las constantes locales (dentro de un procedimiento) tienen como valor predeterminado el acceso público y no se pueden usar modificadores de acceso en ellas. Las constantes miembro de clase y de módulo (fuera de un procedimiento) tienen como valor predeterminado el acceso privado, mientras que las constantes miembro de estructura tienen como valor predeterminado el acceso público. Los niveles de acceso se pueden ajustar con los modificadores de acceso.
Reglas
Contexto de declaración. Una constante declarada en el nivel de módulo, fuera de cualquier procedimiento, es una constante miembro; es un miembro de la clase, estructura o módulo que lo declara.
Una constante declarada en el nivel de procedimiento es una constante local; es local para el procedimiento o bloque que la declara.
Atributos. Solo se pueden aplicar atributos a constantes miembro, no a constantes locales. Un atributo contribuye con información a los metadatos del ensamblado, que no es significativo para el almacenamiento temporal, como las constantes locales.
Modificadores. De forma predeterminada, todas las constantes son
Shared
,Static
yReadOnly
. Al declarar una constante no se puede usar ninguna de estas palabras clave.En el nivel de procedimiento no se puede usar
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
de cada una. Las distintas constantes se separan mediante comas.
Reglas de tipo 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 deinitializer
. Si especificadatatype
yinitializer
, el tipo de datos deinitializer
debe poder convertirse endatatype
. Si no estándatatype
niinitializer
, el valor predeterminado del tipo de datos esObject
.Tipos diferentes. Se pueden especificar distintos tipos de datos para diferentes constantes mediante una cláusula
As
aparte por cada variable que se declare. Sin embargo, no se puede declarar que varias constantes sean del mismo tipo mediante una cláusulaAs
común.Inicialización. El valor de todas las constantes se debe inicializar en
constantlist
. Utiliceinitializer
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 la enumeración que ya están definidos. Se pueden usar operadores aritméticos y lógicos para combinar estos elementos.En
initializer
no se pueden usar variables ni funciones. Sin embargo, se pueden usar palabras clave de conversión comoCByte
yCShort
. También se puede usarAscW
si lo llama con una constanteString
o un argumentoChar
, ya que se puede evaluar en tiempo de compilación.
Comportamiento
Ámbito. A las constantes locales solo se puede acceder desde su propio procedimiento o bloque. A las constantes miembro se puede acceder desde cualquier lugar de su clase, estructura o módulo.
Calificación. El código fuera de una clase, una estructura o un módulo debe calificar el nombre de una constante miembro con el nombre de esa clase, estructura o módulo. El código fuera de un procedimiento o bloque no puede hacer referencia a ninguna constante local de ese procedimiento o bloque.
Ejemplo 1
En el ejemplo siguiente se usa la instrucción Const
para declarar constantes para su uso 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
Ejemplo 2
Si define una constante con tipo de datos Object
, el compilador de Visual Basic le proporciona el tipo de initializer
, en lugar de Object
. En el ejemplo siguiente, la constante naturalLogBase
tiene el tipo en tiempo de ejecución Decimal
.
Const naturalLogBase As Object = CDec(2.7182818284)
MsgBox("Run-time type of constant naturalLogBase is " &
naturalLogBase.GetType.ToString())
En el ejemplo anterior se usa el método ToString en el objeto Type devuelto por el operador GetType, porque Type no se puede convertir a String
mediante CStr
.