我是C#的新手,我试着看了之前的帖子,但没有找到一个好的答案。
在具有单个窗体的C# Windows窗体应用程序中,使用Form.Close()
更好还是使用Form.Dispose()
更好
MSDN表示对象内的所有资源都已关闭,并在调用Close时释放表单。尽管如此,我还是在网上看到了几个遵循Dispose而不是Close的例子。
其中一个比另一个更有优势吗?在哪些情况下,我们应该优先选择其中一个?
发布于 2010-06-23 05:54:59
作为一般规则,我总是主张为提供Dispose方法的任何类显式调用Dispose方法,要么直接调用该方法,要么包装在"using“块中。
大多数情况下,实现IDisposible的类之所以这样做,是因为它们包装了一些需要释放的非托管资源。虽然这些类应该有终结器作为保护措施,但调用Dispose将有助于更早地释放内存,并降低开销。
在Form对象的情况下,正如Kyra的链接所指出的,Close方法被记录为代表您调用Dispose,因此您不需要显式地调用Dispose。然而,对我来说,这总是感觉像是依赖于实现细节。我更喜欢总是为实现它们的类同时调用Close和Dispose,以防止实现更改/错误,并且为了清晰起见。正确实现的Dispose方法应该可以安全地多次调用。
发布于 2010-06-23 05:47:29
不调用Close
可能会绕过发送一堆Win32消息,尽管我不能具体告诉您原因,但人们会认为这些消息有些重要……
Close
的好处是可以引发事件(可以取消),这样外部人员(对于表单)可以监视FormClosing
和FormClosed
,以便做出相应的反应。
如果您只是简单地处理表单,我不清楚是否会引发FormClosing
和/或FormClosed
,但我将把它留给您进行实验。
发布于 2018-03-01 01:29:21
使用using
是一种非常好的方式:
using (MyForm foo = new MyForm())
{
if (foo.ShowDialog() == DialogResult.OK)
{
// your code
}
}
https://stackoverflow.com/questions/3097364
复制相似问题