using(var something = GetSomething()) { something.DoSomething(); if(something.IsX()) return true; } return false;
解决方法
>块内的返回
>块内抛出(并未捕获)异常
>自然地到达块的末尾
基本上,using语句主要是try / finally块的语法糖 – 最后具有所有相同的属性.
编辑:从C# 4 specification的第8.13节:
A
using
statement is stranslated into three parts: acquisition,usage,and disposal. Usage of the resource is implicitly enclosed in atry
statement that includes afinally
clause. Thisfinally
clause disposes of the resource.
finally语句在规范的8.10节中描述:
The statements of a
finally
block are always executed when control leaves atry
statement. This is true whether the control transfer occurs as a result of normal execution; as a result of executing abreak
,continue
,goto
orreturn
statement; or as a result of propagating an exception out of thetry
statement.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。