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

Durata in Visual Basic

Caratteristiche di elementi dichiarati

Ambito in Visual Basic

Livelli di accesso in Visual Basic

Variabili in Visual Basic

Dichiarazione di variabili in Visual Basic

Overload della routine