Вот как выглядит стандартный статический конструктор в 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".