关于"使用"构造的基本知识

use*_*687 6 .net c# vb.net

如果我使用"using"构造,我知道对象会自动处理.如果"using"构造中的语句引发异常,会发生什么."使用"对象仍然处理?如果是的话,何时?

Rex*_*x M 11

using编译器将块转换为:

DisposableType yourObj = new DisposableType();
try
{
    //contents of using block
}
finally
{
    ((IDisposable)yourObj).Dispose();
}
Run Code Online (Sandbox Code Playgroud)

通过将Dispose()通话的finally块,它可以确保Dispose永远叫做-当然,除非异常发生在实例化的网站,因为出现这种情况外try.

重要的是要记住,这using不是一种特殊的运算符或构造 - 它只是编译器替换的东西,它稍微有些迟钝.