Statisk (Visual Basic)
Anger att en eller flera deklarerade lokala variabler ska fortsätta att finnas och behålla sina senaste värden efter avslutad procedur där de deklareras.
Kommentarer
Normalt upphör en lokal variabel i en procedur att existera så snart proceduren stoppas. En statisk variabel fortsätter att finnas och behåller sitt senaste värde. Nästa gång koden anropar proceduren är variabeln inte initierad igen och den innehåller fortfarande det senaste värdet som du har tilldelat till den. En statisk variabel fortsätter att finnas under livslängden för klassen eller modulen som den definieras i.
Regler
Deklarationskontext. Du kan bara använda
Static
lokala variabler. Det innebär att deklarationskontexten för enStatic
variabel måste vara en procedur eller ett block i en procedur, och det kan inte vara en källfil, namnrymd, klass, struktur eller modul.Du kan inte använda
Static
i en strukturprocedur.Det går inte att härleda datatyperna
Static
för lokala variabler. Mer information finns i Slutsatsdragning av lokal typ.Kombinerade modifierare. Du kan inte ange
Static
tillsammans medReadOnly
,Shadows
ellerShared
i samma deklaration.
Funktionssätt
När du deklarerar en statisk variabel i en Shared
procedur är endast en kopia av den statiska variabeln tillgänglig för hela programmet. Du anropar en Shared
procedur med hjälp av klassnamnet, inte en variabel som pekar på en instans av klassen.
När du deklarerar en statisk variabel i en procedur som inte Shared
är , är endast en kopia av variabeln tillgänglig för varje instans av klassen. Du anropar en icke-delad procedur med hjälp av en variabel som pekar på en specifik instans av klassen.
Exempel
I följande exempel visas användningen av Static
.
Function updateSales(ByVal thisSale As Decimal) As Decimal
Static totalSales As Decimal = 0
totalSales += thisSale
Return totalSales
End Function
Variabeln Static
totalSales
initieras till 0 endast en gång. Varje gång du anger updateSales
har fortfarande totalSales
det senaste värdet som du har beräknat för det.
Modifieraren kan användas i den här kontexten Static
: