c#:为什么GC无法在我的代码中收集Weakreference的目标?

思考

我写了这段代码:

            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?

Xanatos

您的代码是正确的。作为Release编译,无需调试器(Shift + F5)或直接从命令提示符运行。有关说明,请参见在调试过程中运行垃圾回收吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么GC无法收集我的对象?

无法在C#代码中引用图像ID。为什么?

为什么我引用GC时会收集它?

为什么使用数组初始化程序的C#代码无法重构我的期望

为什么我的 C# 代码无法找出两个对象何时相同?

在Xcode中,为什么特定的部署目标会破坏我的代码,我应该如何使用它?

为什么我不能在 CudaFy 库的 c# 代码中设置断点?

为什么我们必须在Java脚本(Razor)中对C#代码使用引号

c#为什么我的代码中不同类的变量之和不相等?

为什么打印消息不会在我的C#代码中打印?

为什么此C#代码无法按预期运行?

为什么我的代码无法在Visual Studio Code中运行?

为什么我的代码中的fprintf()函数无法正常工作?

为什么在pygame中我的代码无法使用colorkey或setalpha?

为什么我的Swift中的JSON代码无法解析?

为什么我无法在代码中更改哑变量?

为什么深度测试在我的代码中无法正常工作?

为什么我的 C# 代码没有正确中断?

为什么我的C#代码比我的C代码快?

c# - 为什么我无法访问 Winform 中的组合框?

为什么我无法在C#中从nslookup打印出所有IP地址

为什么在C ++ 4.8.2中无法编译此C ++代码

为什么我的Powershell函数无法从C#调用?

为什么我的if块无法在我的C程序中执行?

为什么无法访问的代码在C ++中不是错误?

为什么断点会在我的C ++代码中跳转?

为什么在我的简单 C++ 代码输出中是 -1717986920?

为什么在我的 c 代码中打印 (null)?

为什么我的代码无法正确加载?