Share via


static, instruction

Déclare un nouvel initialiseur de classe à l'intérieur d'une déclaration de classe.

static identifier {
   [body]
}

Arguments

  • identificateur
    Obligatoire. Nom de la classe qui contient le bloc de l'initialiseur.

  • body
    Facultatif. Code qui comprend le bloc de l'initialiseur.

Notes

Un initialiseur static permet d'initialiser un objet class (non des instances d'objet) avant sa première utilisation. Cette initialisation se produit une seule fois et peut servir à initialiser des champs de la classe marqués avec le modificateur static.

Une classe peut contenir plusieurs blocs d'initialiseur static intercalés entre des déclarations de champ static. Pour initialiser la classe, tous les blocs static et les initialiseurs de champ static sont exécutés dans l'ordre de leur apparition dans le corps de la classe. Cette initialisation est exécutée avant la première référence à un champ static.

Ne confondez pas le modificateur static avec l'instruction static. Le modificateur static indique qu'un membre appartient à la classe elle-même plutôt qu'à une instance de cette classe.

Exemple

L'exemple suivant illustre une déclaration de classe simple dans laquelle l'initialiseur static est utilisé pour un calcul qui ne doit être effectué qu'une seule fois. Dans cet exemple, un tableau de factorielles est calculé une fois. Lorsque des factorielles sont nécessaires, elles sont lues dans le tableau. Cette approche est plus rapide qu'un calcul récursif des factorielles si vous avez besoin de factorielles de grands nombres plusieurs fois dans le programme.

Le modificateur static est utilisé pour la méthode factorielle.

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) );
}

Le résultat généré par ce code est le suivant :

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

Configuration requise

Version .NET

Voir aussi

Référence

class, instruction

static, modificateur