c# - 为什么Form需要设置为null?

标签 c# .net forms null dispose

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

static CalibrationForm form = null;

还有这个

public static void HideCalibration()
{
 form.Hide();
 form.Dispose();
 form = null;
}

为什么要将表单设置为 null 是否有任何特殊原因?

表单设置为null是什么意思?

最佳答案

在这个(IMO 糟糕的)示例中,form 是一个 static 字段,它包含对表单实例的引用,该实例将在应用程序的所有位置可用.问题是 Dispose() 不够 - 如果它被 static 引用,它就不能被垃圾回收> 字段,因为 static 字段不会超出范围。曾经。将字段设置为 null 允许收集实例。

另请注意,对表单的任何 引用都会使它保持事件状态 - 不仅仅是这个字段; 事件订阅是众所周知的人为保持事件的方式。

但要强调:这是一个可怕的例子。我不建议使用 static 字段中的表单进行编码。

关于c# - 为什么Form需要设置为null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21939310/

相关文章:

.net - swagger .net core API 操作错误的不明确 HTTP 方法

javascript - 如何防止禁用 javascript 的用户提交表单?

javascript - 防止验证 angularJS/ionic 中的隐藏字段

c# - 单元测试私有(private)方法

c# - 未声明配置元素

C# 十进制格式化查询

javascript - 表单提交与 Javascript POST 请求

c# - 反序列化.json 到位图图像c#

.net - 存储元数据 "CurrentBind"无效。错误

.net - 使用Asp.net 3.5的多线程与单线程