gpt4 book ai didi

c# - .Net 中的对象处理

转载 作者:太空宇宙 更新时间:2023-11-03 20:32:40 25 4
gpt4 key购买 nike

假设我有以下类(class):

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 的引用?

最佳答案

如果一个对象没有引用,或者它所拥有的引用来自本身没有引用的对象(等等),就会被垃圾回收。

一种可视化方式,垃圾收集器将遍历对象引用图,跟踪所有对象引用,记下它到达的对象(仍然从某处引用)。任何它没有到达的地方都有资格进行垃圾收集,就好像它没有到达它们一样,那么它们就不可能被使用。

请参阅此处了解详细信息(特别是“垃圾收集算法”):http://msdn.microsoft.com/en-us/magazine/bb985010.aspx

所以是的,它将有资格进行 GC。


另外,如果你有一个 dispose 方法,你真的应该实现 IDisposable

关于c# - .Net 中的对象处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6690157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com