What does
using (SqlConnection cn = new SqlConnection(connectionString))
do?
What does
using (SqlConnection cn = new SqlConnection(connectionString))
do?
new SqlConnection(connectionString)
使用提供的连接字符串创建一个新的SqlConnection
实例。
SqlConnection cn = ...
将其分配给新的本地变量cn
(作用域限定为using
语句),该变量保存构造的连接对象。
using(...)
using
语句确保在结尾处Dispose()
连接,即使抛出异常(在这种情况下,Dispose()
表示关闭它/释放到池中等)。
整个代码本质上是:
{ // this { } scope is to limit the "cn"
SqlConnection cn = new SqlConnection(connectionString);
try { // the body of the using block
...
} finally { // dispose if not null
if(cn != null) { cn.Dispose(); }
}
}
当不再需要SqlConnection
时,应该将其处理掉。在这种情况下,SqlConnection
可能会留下一些未受管控的资源,您应该清理它们。 SqlConnection
实现了IDisposable
接口,这意味着您可以(也应该)在使用完毕后调用Dispose
方法。
基本上,这是一个简写:
try {
SqlConnection cn = new SqlConnection(connectionString);
// whatever other code
}
finally {
if (cn != null)
{
cn.Dispose();
}
}
using
时,cn
的作用域也会扩展到try
之外(延伸至finally
)。确保SqlConnection在“using”范围结束时被销毁
使用语句可以应用于实现了 IDisposable
接口的对象。
在使用范围结束时,会调用对象的 Dispose 方法。
这确保了在控制离开 using() {..} 语句块时释放连接。
离开可能是由于异常、函数返回、循环中断、goto 或正常作用域离开而发生。非常方便。