为什么Form需要设置为null?

use*_*360 1 .net c# forms null dispose

我正在学习C#,我看到的示例程序我找到了这样的代码:

static CalibrationForm form = null;
Run Code Online (Sandbox Code Playgroud)

还有这个

public static void HideCalibration()
{
 form.Hide();
 form.Dispose();
 form = null;
}
Run Code Online (Sandbox Code Playgroud)

表单应该设置为null是否有任何特殊原因?

表单的含义是什么设置为null?

Mar*_*ell 8

在此(IMO穷人)示例中,form是一个static字段,其中包含将从应用程序中的所有位置提供的表单实例的引用.问题是这Dispose() 还不够 - 如果static字段引用它就不能进行垃圾收集,因为static字段不会超出范围.永远.设置字段以null允许收集实例.

另请注意,对表单的任何引用都会使其保持活动状态 - 不仅仅是这个字段; 事件订阅是人为地保持活力的臭名昭着的方式.

但重点是:这是一个可怕的例子.我不建议使用static字段中的表单进行编码.