Статический конструктор (static constructor) в C#

Статический конструктор в C# — это специальный метод класса, который вызывается автоматически перед первым обращением к статическим членам класса или перед созданием экземпляра класса. Он используется для инициализации статических данных и выполняется только один раз за всё время работы программы.

Особенности статического конструктора

  • Не принимает параметры и не имеет модификаторов доступа.
  • Выполняется автоматически при первом обращении к классу или при создании его экземпляра.
  • Невозможно вызвать вручную.
  • Выполняется один раз за всё время существования приложения.

Примеры использования

Пример 1: Вызов статического метода

using System;

public class ExampleClass
{
    static ExampleClass()
    {
        Console.WriteLine("Статический конструктор выполнен");
    }
    
    public static void PrintMessage()
    {
        Console.WriteLine("Метод PrintMessage вызван");
    }
}

class Program
{
    static void Main()
    {
        ExampleClass.PrintMessage();
    }
}

Консольный вывод

Статический конструктор выполнен
Метод PrintMessage вызван

Пример 2: Создание экземпляра класса

using System;

public class ExampleClass
{
    static ExampleClass()
    {
        Console.WriteLine("Статический конструктор выполнен");
    }
    
    public ExampleClass()
    {
        Console.WriteLine("Обычный конструктор выполнен");
    }
}

class Program
{
    static void Main()
    {
        ExampleClass obj = new ExampleClass();
    }
}

Консольный вывод

Статический конструктор выполнен
Обычный конструктор выполнен

Когда использовать статический конструктор

  • Для инициализации статических полей.
  • Для загрузки конфигурации перед первым использованием класса.
  • Для регистрации обработчиков событий.

Статические конструкторы позволяют выполнять важные инициализационные задачи один раз, обеспечивая корректную настройку статических данных перед их использованием.