Istruzione Const (Visual Basic)
Dichiara e definisce una o più costanti.
Sintassi
[ <attributelist> ] [ accessmodifier ] [ Shadows ]
Const constantlist
Parti
attributelist
Facoltativo. Elenco di attributi applicabili a tutte le costanti dichiarate in questa istruzione. Vedere Elenco di attributi tra parentesi angolari ("<
" e ">
").
accessmodifier
Facoltativo. Usare questa opzione per specificare il codice che può accedere a queste costanti. Può essere Publicco, Protetto, Amico, Protetto amico, Privato o Privato protetto.
Shadows
Facoltativo. Usare questa opzione per ripetere e nascondere un elemento di programmazione in una classe di base. Vedere Ombre.
constantlist
Obbligatorio. Elenco di costanti dichiarate in questa istruzione.
constant
[ ,
constant
... ]
Ogni constant
presenta la sintassi e le parti seguenti:
constantname
[ As
datatype
] =
initializer
In parte | Descrizione |
---|---|
constantname |
Obbligatorio. Nome della costante. Vedere Declared Element Names. |
datatype |
Richiesto se Option Strict è On . Tipo di dati della costante. |
initializer |
Obbligatorio. Espressione valutata in fase di compilazione e assegnata alla costante. |
Osservazioni:
Se si ha un valore che non cambia mai nell'applicazione, è possibile definire una costante denominata e usarla al posto di un valore letterale. Un nome è più facile da ricordare rispetto a un valore. È possibile definire la costante una sola volta e usarla in molte posizioni nel codice. Se in una versione successiva è necessario ridefinire il valore, l'istruzione Const
è l'unica posizione in cui è necessario apportare una modifica.
Si può usare Const
solo a livello di modulo o routine. Ciò significa che il contesto di dichiarazione per una variabile deve essere una classe, una struttura, un modulo, una routine o un blocco e non può essere un file di origine, uno spazio dei nomi o un'interfaccia. Per altre informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefiniti.
Le costanti locali (all'interno di una routine) vengono usate per impostazione predefinita per l'accesso pubblico e non è possibile usare modificatori di accesso. Per impostazione predefinita, le costanti membro della classe e del modulo (all'esterno di qualsiasi routine) hanno accesso privato e le costanti membro della struttura hanno accesso pubblico. È possibile regolare i livelli di accesso con i modificatori di accesso.
Regole
Contesto della dichiarazione. Una costante dichiarata a livello di modulo, all'esterno di qualsiasi routine, è una costante membro; è un membro della classe, della struttura o del modulo che la dichiara.
Una costante dichiarata a livello di routine è una costante locale; è locale per la routine o il blocco che lo dichiara.
Attributi. È possibile applicare attributi solo alle costanti membro, non alle costanti locali. Un attributo contribuisce a ottenere informazioni sui metadati dell'assembly che non sono significativi per l'archiviazione temporanea, ad esempio le costanti locali.
Modificatori. Per impostazione predefinita, tutte le costanti sono
Shared
,Static
eReadOnly
. Non è possibile usare una di queste parole chiave quando si dichiara una costante.A livello di procedura, non è possibile usare
Shadows
o modificare i modificatori di accesso per dichiarare costanti locali.Più costanti. È possibile dichiarare più costanti nella stessa istruzione di dichiarazione, specificando la parte
constantname
per ognuna di esse. Nel caso di più costanti, è possibile separarle mediante virgole.
Regole del tipo di dati
Tipi di dati. L'istruzione
Const
può dichiarare il tipo di dati di una variabile. È possibile specificare qualsiasi tipo di dati o il nome di un'enumerazione.Tipo predefinito. Se non si specifica
datatype
, la costante accetta il tipo di datiinitializer
. Se si specificano siadatatype
cheinitializer
, il tipo di dati diinitializer
deve essere convertibile indatatype
. Se nédatatype
néinitializer
sono presenti, per impostazione predefinita il tipo di dati èObject
.Tipi diversi. È possibile specificare tipi di dati diversi per costanti diverse usando una clausola
As
separata per ogni variabile dichiarata. Tuttavia, non è possibile dichiarare più costanti nello stesso tipo usando una clausolaAs
comune.Inizializzazione. È necessario inizializzare il valore di ogni costante in
constantlist
. Si usainitializer
per fornire un'espressione da assegnare alla costante. L'espressione può essere qualsiasi combinazione di valori letterali, altre costanti già definite e membri di enumerazione già definiti. È possibile usare operatori aritmetici e logici per combinare tali elementi.Non è possibile usare variabili o funzioni in
initializer
. Tuttavia, è possibile usare parole chiave di conversione comeCByte
eCShort
. È anche possibile usareAscW
se viene chiamato con un argomentoString
oChar
della costante, perché può essere valutato in fase di compilazione.
Comportamento
Ambito. Le costanti locali sono accessibili solo dall'interno della relativa routine o blocco. Le costanti membro sono accessibili ovunque all'interno della classe, della struttura o del modulo.
Qualificazione. Il codice esterno a una classe, una struttura o un modulo deve qualificare il nome di una costante membro con il nome di tale classe, struttura o modulo. Il codice all'esterno di una routine o di un blocco non può fare riferimento ad alcuna costante locale all'interno di tale routine o blocco.
Esempio 1
Nell'esempio seguente viene utilizzata l'istruzione Const
per dichiarare le costanti da usare al posto dei valori letterali.
' The following statements declare constants.
Const maximum As Long = 459
Public Const helpString As String = "HELP"
Private Const startValue As Integer = 5
Esempio 2
Se si definisce una costante con tipo di dati Object
, il compilatore di Visual Basic fornisce il tipo initializer
, anziché Object
. Nell'esempio seguente la costante naturalLogBase
ha il tipo di runtime Decimal
.
Const naturalLogBase As Object = CDec(2.7182818284)
MsgBox("Run-time type of constant naturalLogBase is " &
naturalLogBase.GetType.ToString())
Nell'esempio precedente viene utilizzato il metodo ToString sull'oggetto Type restituito dall'operatore GetType, perché Type non può essere convertito in String
utilizzando CStr
.