Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1088 of 1492 menu
◀ ▶

Статический конструктор

Статический конструктор объявляют как static блок без параметров и модификаторов доступа. CLR вызывает его не более одного раза на тип в домене приложения - обычно перед созданием первого экземпляра или чтением статического поля. Порядок вызова согласован с инициализацией статических полей этого типа.

Синтаксис

class Имя { static Имя() { // инициализация типа } }

Пример

Давайте зададим статическое поле в статическом конструкторе:

using System; class AppId { public static string Value; static AppId() { Value = "abcde"; } } class Program { static void Main() { Console.WriteLine(AppId.Value); } }

Результат выполнения кода:

"abcde"

Пример

Давайте увеличим счётчик при каждом создании экземпляра после однократной инициализации типа:

using System; class Serial { private static int _next; public int Id; static Serial() { _next = 1; } public Serial() { Id = _next++; } } class Program { static void Main() { var first = new Serial(); var second = new Serial(); Console.WriteLine($"{first.Id} {second.Id}"); } }

Результат выполнения кода:

1 2

Пример

Давайте прочитаем статическое поле до создания объекта - статический конструктор уже отработает:

using System; class Table { public static int Size; static Table() { Size = 5; } } class Program { static void Main() { Console.WriteLine(Table.Size); } }

Результат выполнения кода:

5

Смотрите также

  • конструктор экземпляра,
    который вызывается при каждом new
  • модификатор static,
    который отмечает члены, принадлежащие типу
  • статический класс,
    где все члены статические по определению
  • оператор new,
    после которого может выполниться статический конструктор
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить