Condividi tramite


Static (Visual Basic)

Aggiornamento: novembre 2007

Specifica che una o più variabili locali dichiarate restano valide e conservano i valori più recenti dopo il termine della routine nella quale vengono dichiarate.

Note

Di norma, l'esistenza di una variabile locale in una routine termina insieme alla routine stessa. Una variabile statica resta valida e conserva il valore più recente. Alla successiva chiamata della routine da parte del codice, la variabile non viene reinizializzata e contiene ancora il valore più recente a essa assegnato. Una variabile statica continua a esistere per la durata della classe o del modulo in cui è definita.

Regole

  • Contesto della dichiarazione. È possibile utilizzare Static solo su variabili locali. In altri termini, il contesto della dichiarazione per una variabile Static deve essere una routine o un blocco in una routine e non può essere un file di origine, uno spazio dei nomi, una classe, una struttura o un modulo.

    Non è possibile utilizzare Static all'interno di una routine di struttura.

  • Non è possibile dedurre i tipi di dati delle variabili locali Static. Per ulteriori informazioni, vedere Inferenza dei tipi locali.

  • Modificatori combinati. Non è possibile specificare Static insieme a ReadOnly, Shadows o Shared nella stessa dichiarazione.

Comportamento

Il comportamento di qualsiasi variabile locale varia a seconda che sia dichiarata o meno in una routine Shared. Se la routine è Shared, tutte le variabili locali sono condivise automaticamente, incluse le variabili Static. Esiste una sola copia di tale variabile per l'intera applicazione. Viene chiamata una routine Shared che utilizza il nome della classe, non una variabile che punta a un'istanza della classe.

Se la routine non è Shared, le relative variabili locali sono variabili d'istanza, incluse le variabili Static. Esiste una copia indipendente di ciascuna variabile in ogni istanza della classe. Per chiamare una routine non condivisa si utilizza una variabile che punta a un'istanza specifica della classe. Qualsiasi variabile nell'istanza è indipendente da una variabile con lo stesso nome in un'altra istanza. Pertanto, possono contenere valori diversi.

Esempio

Nell'esempio seguente viene illustrato l'utilizzo di Static.

Function updateSales(ByVal thisSale As Decimal) As Decimal
    Static totalSales As Decimal = 0
    totalSales += thisSale
    Return totalSales
End Function

La variabile StatictotalSales viene inizializzata su 0 una sola volta. Ogni volta che si accede a updateSales, in totalSales è presente il valore calcolato più recente.

È possibile utilizzare il modificatore Static nel seguente contesto:

Istruzione Dim (Visual Basic)

Vedere anche

Concetti

Durata in Visual Basic

Dichiarazione di variabili in Visual Basic

Inferenza dei tipi locali

Riferimenti

Shadows

Shared (Visual Basic)

Altre risorse

Strutture: tipi di dati dell'utente

Cenni preliminari sulle classi