使用完毕后,我需要处理一份表格吗?

时间:2011-10-12 03:16:12

标签: c# .net-3.5

我知道C#是一种自动垃圾收集语言,但如果我处理一个表单,我会注意到它有什么区别吗?例如:

SettingsDialog dialog;
private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
{
    dialog = new SettingsDialog();
    dialog.ShowDialog();
    dialog.FormClosed += new FormClosedEventHandler(dialog_FormClosed);
}
void dialog_FormClosed(object sender, FormClosedEventArgs e)
{
    dialog.Dispose();
}

或者我应该把它留作:

private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
{
    SettingsDialog dialog = new SettingsDialog();
    dialog.ShowDialog();
}

此外,如果SettingsDialog消耗大量内存,该怎么办?这会有所作为吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

只需使用:

using(SettingsDialog dialog = new SettingsDialog())
{
    dialog.ShowDialog();
}

这将自动处理dialog

答案 1 :(得分:1)

经验法则是始终Dispose()实现IDisposable接口的类型实例。以资源保护方式执行此操作的最简单方法是根据Petranswer使用using语句。

等待终结者,虽然在许多情况下没有损害,但在某些情况下会咬你,因为你不知道它何时会发生(非确定性)。

当你完成时,最好坚持处理。