public B myObj;
}
public class B {}
И есть метод:
public B Foo()
{
var newA = new A();
newA.myObj = new B();
return newA.myObj;
}
Вопрос: будет ли задиспозлен newA после выхода из метода или же GC будет считать, что пока жив myObj, то есть ссылка на newA и его не грохнет? Пасиб
Вот
диспоз не произойдёт, тк Dispose сам вызываешь. А так GC должен грохнуть
Ты б в пронет закинул, там быстрее бы ответили.
Даже при наличии ссылки живой на внутренний объект?
если у тебя ещё кто-то будет ссылаться на newA, то newA не будет выкинут
ну его явно интересует кейс, где никто более не ссылается
ну так внутренний объект сам по себе живёт
ну если никто не ссылается на A, то A удалится
Да не, это висяк
*удалится неизвестно когда - тогда, когда GC захочет
Эммм?
???
эт не меня триггерить надо)
бля промахнулся
Начнём с того, что у тебя тут вообще нету IDisposable, поэтому «задиспозлен» — определённо невалидный термин. Если же ты пытался спросить, будет ли этот объект собран сборщиком, то правильный ответ, как всегда: зависит. В общем случае он может быть собран как после, так и во время выполнения метода, а иногда и до его запуска. В некоторых вариантах JIT/GC может также не создавать объект. Полагаться на это в продакшен коде — не слишком хорошая идея.
У тебя нету RAII в шарпе, ты не можешь знать когда у тебя в принципе уничтожится объект
Обсуждают сегодня