Я думаю, что этот ответ дополняет или является деталью ответа «рекурсивный».
рован тем, как работают CLR и GC (я работаю над расширением своих знаний по этому вопросу, читая CLR через C #, книги / посты Джона Скита и многое другое).
В любом случае, какая разница между высказыванием:
MyClass myclass = new MyClass();
myclass = null;
Или, заставляя MyClass реализовать IDisposable и деструктор и вызывая Dispose ()?
Кроме того, если у меня есть блок кода с оператором using (например, ниже), если я перехожу через код и выхожу из блока using, удаляется ли объект тогда или когда происходит сборка мусора? Что произойдет, если я в любом случае вызову Dispose () в блоке using?
using (MyDisposableObj mydispobj = new MyDisposableObj())
{
}
У потоковых классов (например, BinaryWriter) есть метод Finalize? Зачем мне это использовать?