我有一个Windows窗体,没有我希望从所有者访问的任何事件或属性。我可以通过两种方式打开表单:
frmExample ex = new frmExample();
ex.ShowDialog(this);
和
(new frmExample()).ShowDialog(this);
内存分配方面是否存在差异?是否有任何影响,利弊?就个人而言,可能天真,我更喜欢第二种方法。
由于
答案 0 :(得分:2)
一个很大的区别是你将无法Dispose()表单实例。只有在调用Show()时,才应该在调用ShowDialog()时自动 。 Boilerplate代码是:
using (var dlg = new frmExample()) {
if (dlg.ShowDialog() == DialogResult.Ok) {
// Access dlg properties
//...
}
}
您可以从此代码段中看到为什么表单不会自动处理。访问属性时,可能会产生ObjectDisposedException。完成访问属性后,您必须自己处理它。 using 语句使其自动且异常安全。