我一直在研究一些代码.我有一个问题:
这两个代码有什么区别?
using (FORM formExemple = new FORM ())
{
formExemple.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)
和
FORM formExemple = new FORM ();
formExemple.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
using
调用对象的Dispose()
方法在完成后自行清理.它通常处理诸如关闭打开连接和/或释放内存之类的事情.如果以其他方式实例化,则必须手动执行此操作.您只能using
在实现IDisposable
接口的对象上使用,这可确保Dispose()
对象存在方法.
using块用于自动处理实现的对象IDisposable
.第一个Dispose()
在块结束时被调用.使用块还将确保在异常情况下正确处理对象.
当开发人员确定他们不再需要该对象时,第二个不需要并且需要处理.
与以往一样,请查阅文档 - MSDN C#using
语句指南或C#规范(它是C#5规范中的8.13节).
该using
语句只能与实现类型一起使用IDisposable
,并且它基本上确保在初始表达式(资源获取表达式)中出现的任何资源都被置于块的末尾,即使抛出异常也是如此.您的第一个代码段大致相当于:
FORM formExemple = new FORM(); // I hope you don't *really* use these names
try
{
formExemple.ShowDialog();
}
finally
{
formExemple.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
还有一点比这更多,请注意:
using
声明的任何变量的范围是语句本身using
语句中变量的变化(原始值仍然处理)基本上,它可以更容易地清理需要及时处理的资源 - 网络流,文件句柄,数据库连接,图形对象等.