Вот как выглядит стандартный статический конструктор в C#: ```csharp public class ExampleClass { // Статическое поле public static int Counter; // Статический конструктор static ExampleClass() { // Инициализация статических полей или выполнение другой логики Counter = 10; Console.WriteLine("Static constructor called"); } // Обычный конструктор public ExampleClass() { Console.WriteLine("Instance constructor called"); } } ``` **Объяснение:** - **Статический конструктор** — это специальный метод, который используется для инициализации статических полей или выполнения какой-либо другой логики, связанной с классом в целом (не конкретным его экземпляром). - **Особенности статического конструктора:** - Он вызывается автоматически перед первым использованием класса или перед созданием первого экземпляра класса. - У него нет параметров, и он не может быть вызван напрямую из кода. - Статический конструктор вызывается один раз за время жизни приложения. **Пример использования:** ```csharp class Program { static void Main(string[] args) { // Первый доступ к классу, статический конструктор вызовется автоматически Console.WriteLine(ExampleClass.Counter); // Output: "Static constructor called", затем "10" // Создание экземпляра класса, вызовется обычный конструктор var instance = new ExampleClass(); // Output: "Instance constructor called" } } ``` В этом примере статический конструктор `ExampleClass` вызывается автоматически при первом обращении к статическому полю `Counter`. Это инициализирует поле значением `10` и выводит сообщение "Static constructor called". Когда создается экземпляр `ExampleClass`, вызывается обычный конструктор, который выводит сообщение "Instance constructor called".