Freigeben über


Static (Visual Basic)

Aktualisiert: November 2007

Legt fest, dass eine oder mehrere deklarierte lokale Variablen nach Beendigung der Prozedur, in der sie deklariert wurden, erhalten bleiben und die letzten Werte beibehalten.

Hinweise

Normalerweise wird eine lokale Variable einer Prozedur gelöscht, sobald die Prozedur beendet wird. Eine statische Variable bleibt erhalten und behält ihren letzten Wert bei. Beim nächsten Aufruf der Prozedur wird die Variable nicht neu initialisiert, sondern hat immer noch den Wert, der ihr zuletzt zugewiesen wurde. Eine statische Variable bleibt so lange bestehen, wie die Klasse oder das Modul, in der bzw. dem sie definiert wurde.

Regeln

  • Deklarationskontext. Sie können Static nur für lokale Variablen verwenden. Das bedeutet, dass der Deklarationskontext einer als Static deklarierten Variable eine Prozedur oder ein Block innerhalb einer Prozedur sein muss, nicht aber eine Quelldatei, ein Namespace, eine Klasse, eine Struktur oder ein Modul.

    Sie können Static nicht in einer Strukturprozedur verwenden.

  • Die Datentypen von lokalen Static-Variablen können nicht abgeleitet werden. Weitere Informationen finden Sie unter Lokaler Typrückschluss.

  • Kombinierte Modifizierer. Sie können Static nicht zusammen mit ReadOnly, Shadows oder Shared in derselben Deklaration angeben.

Verhalten

Das Verhalten jeder lokalen Variablen hängt davon ab, ob sie in einer Shared-Prozedur deklariert wird. Wenn die Prozedur Shared ist, werden alle enthaltenen lokalen Variablen automatisch freigegeben. Dies schließt Static-Variablen ein. In der gesamten Anwendung wird nur ein Exemplar einer solchen Variablen verwendet. Sie rufen eine Shared-Prozedur über den Klassennamen auf statt über eine Variable, die auf eine Instanz der Klasse zeigt.

Wenn die Prozedur nicht Shared ist, sind die lokalen Variablen Instanzvariablen. Dies schließt Static-Variablen ein. In jeder Instanz der Klasse gibt es ein von anderen Instanzen unabhängiges Exemplar der einzelnen Variablen. Sie rufen eine nicht als Shared deklarierte Prozedur mit einer Variablen auf, die auf eine bestimmte Instanz der Klasse zeigt. Jede Variable in dieser Instanz ist von gleichnamigen Variablen in anderen Instanzen unabhängig. Deshalb können sie andere Werte enthalten.

Beispiel

Das folgende Beispiel veranschaulicht die Verwendung von Static.

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

Die Static-Variable totalSales wird nur einmal mit dem Wert 0 (null) initialisiert. Bei jeder Ausführung von updateSales enthält totalSales den zuletzt berechneten Wert.

Der Static-Modifizierer kann in diesem Kontext verwendet werden:

Dim-Anweisung (Visual Basic)

Siehe auch

Konzepte

Lebensdauer in Visual Basic

Variablendeklaration in Visual Basic

Lokaler Typrückschluss

Referenz

Shadows

Shared (Visual Basic)

Weitere Ressourcen

Strukturen: Benutzerdefinierte Datentypen

Was sind Klassen?