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?
在此(IMO穷人)示例中,form
是一个static
字段,其中包含将从应用程序中的所有位置提供的表单实例的引用.问题是这Dispose()
还不够 - 如果static
字段引用它就不能进行垃圾收集,因为static
字段不会超出范围.永远.设置字段以null
允许收集实例.
另请注意,对表单的任何引用都会使其保持活动状态 - 不仅仅是这个字段; 事件订阅是人为地保持活力的臭名昭着的方式.
但重点是:这是一个可怕的例子.我不建议使用static
字段中的表单进行编码.