我写了这段代码:
dog joe = new dog();
WeakReference wr = new WeakReference(joe);
if (wr.IsAlive)
{
Console.WriteLine("Yes,first time");
}
else
{
Console.WriteLine("No,first time");
}
GC.Collect();
if (wr.IsAlive)
{
Console.WriteLine("Yes,second time");
}
else
{
Console.WriteLine("No,second time");
}
我希望得到以下结果:是,第一次,否,第二次
但是GC似乎没有收集我的WeakReference的目标(乔)。结果是:是,第一次是,第二次
我的问题是什么?..我是否会误解WeakReferences?
您的代码是正确的。作为Release编译,无需调试器(Shift + F5)或直接从命令提示符运行。有关说明,请参见在调试过程中运行垃圾回收吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句