Procedura: controllare l'ambito di una variabile (Visual Basic)
In genere una variabile si trova nell'ambito o è visibile per riferimento in tutta l'area in cui viene dichiarata. In alcuni casi il livello di accesso della variabile può influenzarne l'ambito.
Per altre informazioni, vedere Scope in Visual Basic.
Ambito a livello di blocco o routine
Per rendere visibile una variabile solo all'interno di un blocco
Posizionare l'Istruzione Dim per la variabile tra le istruzioni di dichiarazione di avvio e di terminazione del blocco, ad esempio tra le istruzioni
For
eNext
di un cicloFor
.È possibile fare riferimento alla variabile solo dall'interno del blocco.
Per rendere visibile una variabile solo all'interno di una routine
Inserire l'istruzione
Dim
per la variabile all'interno della routine, ma all'esterno di qualsiasi blocco, ad esempio un bloccoWith
...End With
.È possibile fare riferimento alla variabile solo dall'interno della routine, incluso all'interno di qualsiasi blocco contenuto nella routine.
Ambito a livello di modulo o spazio dei nomi
Per praticità, il livello di modulo del singolo termine si applica ugualmente a moduli, classi e strutture. Il livello di accesso di una variabile a livello di modulo ne determina l'ambito. Lo spazio dei nomi che contiene il modulo, la classe o la struttura influisce anche sull'ambito.
Per rendere visibile una variabile in un modulo, una classe o una struttura
Inserire l'istruzione
Dim
per la variabile all'interno del modulo, della classe o della struttura, ma all'esterno di qualsiasi routine.Includere la parola chiave Private nell'istruzione
Dim
.È possibile fare riferimento alla variabile da qualsiasi punto all'interno del modulo, della classe o della struttura, ma non dall'esterno.
Per rendere visibile una variabile in uno spazio dei nomi
Inserire l'istruzione
Dim
per la variabile all'interno del modulo, della classe o della struttura, ma all'esterno di qualsiasi routine.Includere la parola chiave Friend o Public nell'istruzione
Dim
.È possibile fare riferimento alla variabile da qualsiasi punto all'interno dello spazio dei nomi contenente il modulo, la classe o la struttura.
Esempio
L'esempio seguente dichiara una variabile a livello di modulo e ne limita la visibilità al codice all'interno del modulo.
Module demonstrateScope
Private strMsg As String
Sub initializePrivateVariable()
strMsg = "This variable cannot be used outside this module."
End Sub
Sub usePrivateVariable()
MsgBox(strMsg)
End Sub
End Module
Nell'esempio precedente tutte le routine definite nel modulo demonstrateScope
possono fare riferimento alla variabile String
strMsg
. Quando viene chiamata la routine usePrivateVariable
, viene visualizzato il contenuto della variabile stringa strMsg
in una finestra di dialogo.
Con la modifica seguente all'esempio precedente, il codice può fare riferimento alla variabile stringa strMsg
in qualsiasi punto dello spazio dei nomi della relativa dichiarazione.
Public strMsg As String
Programmazione efficiente
Più piccolo è l'ambito di una variabile, minore è la probabilità di riferimenti accidentali alla variabile anziché a un'altra variabile con lo stesso nome. È anche possibile ridurre al minimo i problemi di corrispondenza dei riferimenti.
Sicurezza di .NET Framework
Più ristretto è l'ambito di una variabile, minore è la probabilità che il codice dannoso possa usarlo in modo improprio.