Задать вопрос

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

День добрый. Не могу понять одну вещь. В обычном режиме компиляции фразу "Конструктор 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";
    }
}
  • Вопрос задан
  • 248 просмотров
Подписаться 3 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    SDP-030_PRG Продвинутая разработка в Microsoft .NET
    1 неделя
    Далее
  • Ulearn.me
    Проектирование на языке C#
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

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