Код выглядит следующим образом.Как сборщик мусора выпускает память в C#
public class clsMisc : IDisposable {
List<clsEmployee> lst = new List<clsEmployee>();
void Add(){
lst.Add(obj);
//Adding to it list here
}
public void Dispose()
{
lst = null;
}
}
выше класс называется так,
Using(clsMisc obj = new clsMisc()){
//Here goes the code
}
, когда он выходит из сферы, используя метод Dispose в clsMisc называеться и в этом мы присвоили нуль.
Будут ли выпущены значения, сохраненные в памяти (существующие записи clsEmployee в списке), и назначит новое значение, или создаст новый экземпляр List и присвоит значение null?
Я не мог понять поведение, так как я очень новый.
Может ли кто-нибудь помочь мне в этом?
1.You не нужно устанавливать '' lst' в null'. 2.Что именно ваш вопрос? Получает ли объект GC'd после выполнения инструкции using? или разные? –
После того, как вы установили нулевое значение, что произойдет? – shanmugharaj
Ничего не произойдет сразу. Но если это единственная ссылка на экземпляр, который вы установили в null. Это означает, что больше нет управляемых ссылок на объект, он имеет право на сбор мусора. GC будет собирать его, когда триггеры сбора мусора. –