Winforms 实例化表单和赋值给变量与简单实例化有什么区别?

Winforms 实例化表单和赋值给变量与简单实例化有什么区别?,winforms,variables,Winforms,Variables,我有一个windows窗体,它没有我希望从所有者处访问的任何事件或属性。有两种方法可以打开表单: frmExample ex = new frmExample(); ex.ShowDialog(this); 及 在内存分配等方面会有差异吗?是否有任何影响、利弊?就我个人而言,可能很天真,我更喜欢第二种方法 谢谢一个很大的区别是您将无法处理()表单实例。您应该知道,当您调用ShowDialog()时,处置不是自动的,仅当您调用Show()时。样板代码为: using (var dlg = new

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

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

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


谢谢

一个很大的区别是您将无法处理()表单实例。您应该知道,当您调用ShowDialog()时,处置不是自动的,仅当您调用Show()时。样板代码为:

using (var dlg = new frmExample()) {
    if (dlg.ShowDialog() == DialogResult.Ok) {
        // Access dlg properties
        //...
    }
}
您也许可以从这段代码中看出为什么表单不能自动处理。访问属性时可能会产生ObjectDisposedException。在访问完属性后,您必须自己处理它。using语句使其自动且异常安全

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