Instrução Static

Declara um inicializador de classe nova dentro de uma declaração de classe.

static identifier {
   [body]
}

Argumentos

  • identificador
    Obrigatório. O nome da classe que contém o bloco de inicializador.

  • body
    Opcional. O código que compõe o bloco de inicializador.

Comentários

A estático inicializador é usado para inicializar um classe o objeto (não a instâncias de objeto) antes de sua primeira utilização. Essa inicialização ocorre somente uma vez e pode ser usado para inicializar os campos na classe que tem o estático modificador.

A classe pode conter vários estático blocos de inicializador intercaladas com estático declarações de campo. Ao inicializar o classe, todos os o estático blocos e estático inicializadores de campo são executados na ordem em que aparecem na classe corpo. Essa inicialização é executada antes da primeira referência a um estático campo.

Não confunda o estático modificador com o estático instrução. O estático modificador denota um membro que pertence à própria classe, não qualquer instância da classe.

Exemplo

O exemplo a seguir mostra um simples classe declaração na qual o estático inicializador é usado para executar um cálculo que só precisa ser feito uma vez. Neste exemplo, uma tabela de fatoriais é calculada de uma vez. Quando fatoriais são necessários, eles são lidos da tabela. Essa abordagem é mais rápida do que o cálculo recursivamente de fatoriais se fatoriais grandes são necessárias muitas vezes no programa.

O estático modificador é usado para o método fatorial.

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

A saída desse código é:

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

Requisitos

Versão.NET

Consulte também

Referência

Declaração de classe.

Modificador estático