Bri*_*Kim 95 c# asp.net using-statement
在下面的示例中,如果在using
语句中引发异常,则连接是否会关闭并处理?
using (var conn = new SqlConnection("..."))
{
conn.Open();
// stuff happens here and exception is thrown...
}
Run Code Online (Sandbox Code Playgroud)
我知道下面这段代码会确保它确实如此,但我很好奇使用声明是如何做到的.
var conn;
try
{
conn = new SqlConnection("...");
conn.Open();
// stuff happens here and exception is thrown...
}
// catch it or let it bubble up
finally
{
conn.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
Jef*_*tes 105
是的,using
将您的代码包装在try/finally块中,如果该finally
部分Dispose()
存在,该部分将调用该块.但是,它不会Close()
直接调用,因为它只检查IDisposable
正在实现的接口,因此检查Dispose()
方法.
也可以看看:
Flo*_*bau 19
这就是反射器如何解码代码生成的IL:
private static void Main(string[] args) { SqlConnection conn = new SqlConnection("..."); try { conn.Open(); DoStuff(); } finally { if (conn != null) { conn.Dispose(); } } }
所以答案是肯定的,它会关闭连接
DoStuff()抛出一个例外.
归档时间: |
|
查看次数: |
25473 次 |
最近记录: |