实例化表单和分配变量与简单实例化之间的区别是什么?

时间:2011-11-14 10:51:13

标签: winforms variables

我有一个Windows窗体,没有我希望从所有者访问的任何事件或属性。我可以通过两种方式打开表单:

frmExample ex = new frmExample();
ex.ShowDialog(this);

(new frmExample()).ShowDialog(this);

内存分配方面是否存在差异?是否有任何影响,利弊?就个人而言,可能天真,我更喜欢第二种方法。

由于

1 个答案:

答案 0 :(得分:2)

一个很大的区别是你将无法Dispose()表单实例。只有在调用Show()时,才应该在调用ShowDialog()时自动 。 Boilerplate代码是:

using (var dlg = new frmExample()) {
    if (dlg.ShowDialog() == DialogResult.Ok) {
        // Access dlg properties
        //...
    }
}

您可以从此代码段中看到为什么表单不会自动处理。访问属性时,可能会产生ObjectDisposedException。完成访问属性后,您必须自己处理它。 using 语句使其自动且异常安全。