我正在查看其他人编写的一些C#代码。只要表单被实例化然后显示,就完成以下操作。它是否正确?为什么你会在这种情况下使用“使用”?
MyForm f;
using (f = new MyForm())
{
f.ShowDialog();
}
其他问题:
可以替换以下代码吗?
using (MyForm f = new MyForm())
{
f.ShowDialog();
}
答案 0 :(得分:12)
WinForms中的Form
实现IDisposable
模式(它从IDisposable
继承Component
。原作者正确地确保通过using
声明。
答案 1 :(得分:3)
这将MyForm对象f持有的资源限制为使用块。当块退出时,将调用其Dispose方法,并保证在此时“处理”它。因此,它所拥有的任何资源都将得到确定性的清理。此外,不能修改f以引用使用块内的另一个对象。有关更多详细信息,请参阅有关在MSDN中使用的信息:
答案 2 :(得分:3)
也许。如果MyForm实现了IDisposable,这将确保在调用ShowDialog时抛出异常时调用Dispose方法。
否则,除非您想立即强行处置,否则无需使用
答案 3 :(得分:0)
是的,这是IDisposable的'正确'用法。也许MyForm的作者有一些大对象(比如一个大型MemoryStream)或文件资源(例如一个打开的FileStream),它打开并希望确保尽快发布。在这种情况下,在using语句中调用MyForm ctor会有所帮助。
问题2:
在C#3.0+中,您可以使用较短的(并且一样清晰):
使用( var f = new MyForm())