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

Время жизни объекта, если передали ссылку его поля в статический класс?

Вот пример кода:
static class A
{
        static D d;
        void static Func1()
        {
                B b = new B();
                d = b.Func2();
        }
        void static Main()
        {
                Func1();
                GC.Collect();
                System.Threading.Thread.Sleep(10000);
                //b is removed?
        }
}

class B
{
        public D d = new D();
        public D Func2()
        {
                return d;
        }
}

class D
{
}

Будет ли удален объект b из кучи после сборки мусора, если на одно из его полей ссылается статический объект?
  • Вопрос задан
  • 2357 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 1
Mrrl
@Mrrl
Заводчик кардиганов
Будет. Ссылка идёт не на поле объекта, а на объект, который когда-то лежал в этом поле. После чистки останется только объект d. Вот если бы в d при конструировании была ссылка на b, как на "родителя", то b бы тоже остался.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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