Как тут работает инициализация переменных?

День добрый. Не могу понять одну вещь. В обычном режиме компиляции фразу "Конструктор B" выводит один раз. Однако, если запустить отладку в одном месте (указано в коде) , то фраза печатается 3 раза. Очень любопытно, почему это происходит.
45e90185c5694c4ab04ccb1c140ba8fd.png
using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("До вызова");
        Class_1.StaticMethod();
        Console.WriteLine("После вызова");

        Console.ReadKey();
    }
}
class Class_1 
{
    private Class_2 field = new Class_2();

    public static void StaticMethod()
    {           
        Console.WriteLine(new Class_1().field); // Флажок для отладки
    }       
}
class Class_2
{
    public Class_2()
    {    
        Console.WriteLine("Конструктор B");
    }
    public override string ToString()
    {
        return "Class_2";
    }
}
  • Вопрос задан
  • 247 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы