Когда вызывается конструктор в C#?

«Когда вызывается конструктор в C#?» — вопрос из категории C# Core, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Базовый пример:

public class Order
{
    public int Id { get; }
    public DateTime CreatedAt { get; }

    // Конструктор экземпляра
    public Order(int id)
    {
        Id = id;
        CreatedAt = DateTime.UtcNow; // Инициализация при создании
    }
}

// Вызов конструктора при инстанцировании
var newOrder = new Order(1001);

Ключевые моменты и типы конструкторов:

  1. Конструктор по умолчанию: Если в классе нет ни одного конструктора, компилятор C# автоматически генерирует публичный конструктор без параметров.
  2. Статический конструктор: Вызывается один раз перед первым обращением к классу (до создания первого экземпляра или использования любого статического члена). Используется для инициализации статических полей.
    public class Logger
    {
        static Logger()
        {
            // Инициализация статического конфигурационного поля
            LogLevel = ConfigurationManager.AppSettings["DefaultLogLevel"];
        }
        public static string LogLevel { get; }
    }
  3. Цепочка конструкторов: Конструктор производного класса должен явно или неявно вызывать конструктор базового класса с помощью : base(...).
  4. Приватный конструктор: Используется в паттернах, запрещающих создание экземпляров (например, в статических классах или для реализации Singleton).