Procedura: aumentare la durata di una variabile
Aggiornamento: novembre 2007
In genere, una variabile cessa di esistere quando cessa di esistere l'elemento di programmazione in cui è stata dichiarata. È possibile, tuttavia, rendere più lunga la durata di una variabile rispetto all'elemento contenitore dichiarando la variabile con la parola chiave Static (Visual Basic).
Per ulteriori informazioni, vedere Durata in Visual Basic.
Per rendere la durata di una variabile più lunga rispetto all'elemento contenitore
Se la variabile è una variabile locale (dichiarata all'interno di una routine), includere la parola chiave Static nell'Istruzione Dim (Visual Basic) che la dichiara. Una variabile statica esisterà finché esisterà la classe o il modulo contenente la routine che dichiara la variabile.
Se una variabile locale si trova all'interno di una routine Shared (Visual Basic), la routine e le relative variabili esisteranno finché l'applicazione rimarrà in esecuzione. In questo caso, non utilizzare Static.
Se la variabile è una variabile membro (dichiarata in una classe o in una struttura, all'esterno di una routine), includere la parola chiave Shared nell'istruzione Dim che la dichiara. Una variabile condivisa non è associata ad alcuna istanza della relativa classe o struttura ed esisterà finché l'applicazione rimarrà in esecuzione. Non è possibile utilizzare Static su una variabile membro.
Se una variabile membro è dichiarata in un modulo, tale variabile esisterà finché l'applicazione rimarrà in esecuzione. In questo caso, non utilizzare Shared.
Esempio
Nell'esempio riportato di seguito viene dichiarata una variabile con la parola chiave Static (Visual Basic). La parola chiave Dim non è necessaria quando l'Istruzione Dim (Visual Basic) utilizza un modificatore quale Static.
Function runningTotal(ByVal num As Integer) As Integer
Static applesSold As Integer
applesSold = applesSold + num
Return applesSold
End Function
Nell'esempio precedente la variabile applesSold continuerà a esistere anche dopo che la routine runningTotal avrà restituito un valore al codice chiamante. Alla successiva chiamata di runningTotal, applesSold conserverà il valore precedentemente calcolato.
Se applesSold è stata dichiarata senza utilizzare la parola chiave Static, i valori precedentemente accumulati non verranno conservati tra le varie chiamate a runningTotal. Alla successiva chiamata a runningTotal, la variabile applesSold verrà ricreata e inizializzata su 0, mentre la routine runningTotal restituirà semplicemente lo stesso valore con cui era stata chiamata.
Compilazione del codice
È possibile inizializzare il valore di una variabile locale statica come parte della sua dichiarazione. Se si dichiara una matrice come Static, è possibile inizializzarne il numero di dimensioni, la lunghezza di ogni dimensione e i valori dei singoli elementi.
Variabili statiche con lo stesso nome
È possibile dichiarare variabili statiche con lo stesso nome in più routine. In questo caso, il compilatore di Visual Basic considera ognuna di queste variabili come un elemento distinto. L'inizializzazione di una di queste variabili non ha effetto sul valore delle altre. Lo stesso avviene se si definisce una routine con un gruppo di overload e si dichiara una variabile statica con lo stesso nome in ogni overload.
Elementi contenitore per variabili statiche
È possibile dichiarare una variabile locale statica all'interno di una classe, ossia all'interno di una routine di tale classe. Non è tuttavia possibile dichiarare una variabile locale statica all'interno di una struttura, né come membro della struttura né come variabile locale di una routine all'interno di tale struttura.
Sicurezza
Nell'esempio precedente è possibile ottenere la stessa durata dichiarando applesSold a livello di modulo. Tuttavia, se si modifica in questo modo l'ambito di una variabile, la routine non avrà più accesso esclusivo a tale variabile. Poiché altre routine possono accedere a applesSold e modificarne il valore, il totale parziale potrebbe non essere affidabile e la manutenzione del codice potrebbe risultare più difficoltosa.
Vedere anche
Concetti
Caratteristiche di elementi dichiarati
Livelli di accesso in Visual Basic