Condividi tramite


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 e ReadOnly. 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 dati initializer. Se si specificano sia datatype che initializer, il tipo di dati di initializer deve essere convertibile in datatype. Se né datatypeinitializer 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 clausola As comune.

  • Inizializzazione. È necessario inizializzare il valore di ogni costante in constantlist. Si usa initializer 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 come CByte e CShort. È anche possibile usare AscW se viene chiamato con un argomento String o Char 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.

Vedi anche