关闭winform应用程序时,将对象设置为null通常是个好主意吗?

bob*_*bbo 3 c# .net-2.0 winforms

在C#2.0 winform应用程序中将托管对象设置为null通常是一个好主意,即在关闭它们时将表单和控件设置为null,或者我应该将其留给垃圾收集.

我的项目中的一个类叫做Job,它存储String和Lists类型等.是否有必要这样做:

if (Job != null)
{
    Job = null;
}
Run Code Online (Sandbox Code Playgroud)

或者这只是非托管资源所必需的,例如具有dispose方法的文件句柄.我绝对应该调用它,然后设置为null.

任何澄清都会很棒.谢谢.

Jon*_*eet 6

不 - 当你关闭应用程序时,你应该做任何你需要的事情来清除诸如文件句柄之类的东西(或者你可能丢失数据),但是你不需要担心内存.你的进程即将崩溃 - 除此之外它不可能占用任何内存,除非出现操作系统错误!

即使您的进程打算终止,通常也不应将变量设置为null.几乎在所有情况下,垃圾收集器都会做你想要的.如果你知道变量本身仍然是"实时",你只需要将一个变量设置为null,但是你不希望它当前所引用的对象被该变量保持活着状态.这非常罕见.