Compartir a través de


static (Instrucción)

Declara un inicializador de clase nuevo dentro de una declaración de clase.

static identifier {
   [body]
}

Argumentos

  • Identificador
    Obligatorio. Nombre de la clase que contiene el bloque inicializador.

  • body
    Opcional. Código que compone el bloque inicializador.

Comentarios

Un inicializador static se utiliza para inicializar un objeto class (no instancias de objeto) antes de su primer uso. Esta inicialización tiene lugar una vez y se puede utilizar para inicializar campos en la clase que tiene el modificador static.

Un objeto class puede contener varios bloques inicializadores static alternados con declaraciones de campo static. Para inicializar un objeto class, todos los bloques static y los inicializadores de campo static se ejecutan en el orden en el que aparecen en el cuerpo del objeto class. Esta inicialización se lleva a cabo antes de la primera referencia a un campo static.

No confunda el modificador static con la instrucción static. El modificador static denota un miembro que pertenece a la clase en sí, no una instancia de la clase.

Ejemplo

El siguiente ejemplo muestra una declaración de class sencilla en la que se utiliza el inicializador static para realizar un cálculo que sólo es preciso realizar una vez. En este ejemplo se calcula una tabla de factoriales una sola vez. Cuando se necesitan los factoriales, se leen de la tabla. Si se precisan factoriales grandes varias veces en el programa, este método resultará más rápido que calcular los factoriales de manera recursiva.

Se utiliza el modificador static para el método factorial:

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

El resultado de este código es:

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

Requisitos

Versión .NET

Vea también

Referencia

class (Instrucción)

static (Modificador)