c#:为什么GC不能在我的代码中收集弱引用的目标?



我写了这个代码:

            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的目标(joe)。结果是:是的,第一次是,第二次

我的问题是什么?。。我误解了WeakReferences吗?

您的代码是正确的。编译为Release,不使用调试器(Shift+F5)或直接从命令提示符运行。有关解释,请参阅垃圾收集是否在调试期间运行?

相关内容

  • 没有找到相关文章

最新更新