假设我有以下课程:
Class MainClass
{
private OtherClass1;
MainClass()
{
OtherClass1 = new OtherClass1();
}
void dispose()
{
OtherClass1 = null;
}
}
class OtherClass1
{
private OtherClass2;
OtherClass1()
{
OtherClass2 = new OtherClass2();
}
}
class OtherClass2
{
}
如果我使MainClass无效,以后再调用dispose方法,OtherClass1是否会被垃圾回收(以后)?还是我必须首先清除对OtherClass2的引用?
最佳答案
在提供的代码中,您无需任何操作,都可以安全地删除null
,一切都会好起来的。
如果您的OtherClass1和/或OtherClass2是托管资源,即它们实现了dispose()
接口,则您的代码不够好。然后,您将必须链接Dispose:
class MainClass : IDisposable
{
private OtherClass1;
MainClass()
{
OtherClass1 = new OtherClass1();
}
public void Dispose()
{
OtherClass1.Dispose();
// OtherClass1 = null; // not needed
}
}