sys*_*ard 1 .net c# dispose object
假设我有以下课程:
Class MainClass
{
private OtherClass1;
MainClass()
{
OtherClass1 = new OtherClass1();
}
void dispose()
{
OtherClass1 = null;
}
}
class OtherClass1
{
private OtherClass2;
OtherClass1()
{
OtherClass2 = new OtherClass2();
}
}
class OtherClass2
{
}
Run Code Online (Sandbox Code Playgroud)
如果我实例化MainClass并稍后调用dispose方法,那么OtherClass1是否会被垃圾收集(稍后)?或者我是否首先清除对OtherClass2的引用?
如果对象没有引用,则会收集垃圾,或者它所引用的引用来自本身没有引用的对象(等等).
一种可视化的方法是,垃圾收集器将遍历对象引用图,跟随所有对象引用,记录它到达的对象(仍然从某处引用).它没有得到的任何东西都有资格进行垃圾收集,好像它没有找到它们那么它们就不可能被使用了.
请参阅此处获取深入信息(特别是"垃圾收集算法"):http://msdn.microsoft.com/en-us/magazine/bb985010.aspx
所以是的,它有资格成为GC.
另外,如果你有一个dispose方法,你真的应该实现IDisposable
.