Поделиться через


Оператор static

Обновлен: Ноябрь 2007

Объявляет новый инициализатор класса в объявлении класса.

static identifier {
   [body]
}

Аргументы

  • identifier
    Обязательный. Имя класса, содержащего блок инициализатора.

  • body
    Необязательный. Код блока инициализатора.

Заметки

Инициализатор static используется для инициализации объекта класса (но не экземпляров объекта) перед его первым использованием. Инициализация выполняется только один раз, она может использоваться для инициализации полей в классе, которые помечены модификатором static.

Класс может содержать несколько блоков инициализатора static, перемежаемых с объявлениями статических полей. Для инициализации класса все блоки static и инициализаторы полей static выполняются в том порядке, в котором они расположены в теле класса. Инициализация выполняется перед первым обращением к полю с модификатором static.

Не следует смешивать модификатор static с оператором static. Модификатор static относится к члену, который принадлежит к самому классу, а не одному из его экземпляров.

Пример

В следующем примере показано простое объявление класса. В этом объявлении используется инициализатор static для вычисления, которое необходимо выполнить только один раз. В примере один раз вычисляется таблица факториалов. Когда требуются факториалы, они считываются из таблицы. Если в программе неоднократно используются факториалы больших чисел, то такой подход является более производительным, чем рекурсивное вычисление факториалов.

Модификатор static используется для метода факториала.

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

В результате выполнения данного кода выводятся следующие данные:

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

Требования

Версия .NET

См. также

Ссылки

Оператор сlass

Модификатор static