例如
using(var something = GetSomething())
{
something.DoSomething();
if(something.IsX()) return true;
}
return false;
是的,一点没错。这Dispose
方法被调用但是using
语句会被执行,除非整个进程突然终止。最常见的情况是:
- A
return
块内
- 块内抛出(但未捕获)异常
- 自然到达区块的末端
基本上是一个using
语句主要是语法糖try
/finally
块 - 和finally
具有所有相同的属性。
编辑:来自第 8.13 节C# 4 规范 http://download.microsoft.com/download/0/B/D/0BDA894F-2CCD-4C2C-B5A7-4EB1171962E5/CSharp%20Language%20Specification.doc:
A using
声明分为三个部分:获取、使用和处置。资源的使用隐式包含在try
声明包含一个finally
条款。这finally
子句处置资源。
The finally
声明在规范第 8.10 节中描述:
的声明finally
当控制权离开时,块总是被执行try
陈述。无论控制权转移是作为正常执行的结果发生的,都是如此;作为执行的结果break
, continue
, goto
or return
陈述;或者作为传播异常的结果try
陈述。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)