static-Anweisung

Aktualisiert: November 2007

Deklariert eine neue Klasseninitialisierung innerhalb einer Klassendeklaration.

static identifier {
   [body]
}

Argumente

  • identifier
    Erforderlich. Der Name der Klasse, die den Initialisierungsblock enthält.

  • body
    Optional. Der Code mit dem Initialisierungsblock.

Hinweise

Mithilfe einer static-Initialisierung wird ein class-Objekt (keine Objektinstanzen) vor dessen erster Verwendung initialisiert. Diese Initialisierung tritt nur einmal ein und kann verwendet werden, um Felder in der Klasse zu initialisieren, die den static-Modifizierer besitzen.

Eine class kann mehrere static-Initialisierungsblocks enthalten, zwischen denen static-Felddeklarationen eingefügt sind. Die class wird initialisiert, indem alle static-Blöcke und static-Feldinitialisierungen in der Reihenfolge ausgeführt werden, in der sie im class-Text erscheinen. Diese Initialisierung wird vor dem ersten Verweis auf ein static-Feld durchgeführt.

Verwechseln Sie den static-Modifizierer nicht mit der static-Anweisung. Der static-Modifizerer weist auf einen Member hin, der direkt zur Klasse selbst gehört, aber nicht zu einer Instanz der Klasse.

Beispiel

Das folgende Beispiel veranschaulicht eine einfache class-Deklaration, in der mithilfe der static-Initialisierung eine Berechnung durchgeführt wird, die nur einmal erforderlich ist. Im angegebenen Beispiel wird eine Tabelle mit Fakultäten ein einziges Mal berechnet. Fakultäten werden dann aus der Tabelle gelesen, wenn sie benötigt werden. Wenn im Programm große Fakultäten mehrfach benötigt werden, ist diese Methode wesentlich schneller als die rekursive Berechnung von Fakultäten.

Der static-Modifizierer wird für die Methode zum Berechnen der Fakultät verwendet.

class CMath {
   // Dimension an array to store factorial values.
   // The static modifier is used in the next two lines.
   static const maxFactorial : int = 5;
   static const factorialArray : int[] = new int[maxFactorial];

   static CMath {
      // Initialize the array of factorial values.
      // Use factorialArray[x] = (x+1)!
      factorialArray[0] = 1;
      for(var i : int = 1; i< maxFactorial; i++) {
         factorialArray[i] = factorialArray[i-1] * (i+1);
      }
      // Show when the initializer is run.
      print("Initialized factorialArray.");
   }

   static function factorial(x : int) : int {
      // Should have code to check that x is in range.
      return factorialArray[x-1];
   }
};

print("Table of factorials:");

for(var x : int = 1; x <= CMath.maxFactorial; x++) {
   print( x + "! = " + CMath.factorial(x) );
}

Ausgabe dieses Codes:

Table of factorials:
Initialized factorialArray.
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120

Anforderungen

Version .NET

Siehe auch

Referenz

class-Anweisung

static-Modifizierer