这段代码的作用是什么:使用 (SqlConnection cn = new SqlConnection(connectionString))。

4

What does

using (SqlConnection cn = new SqlConnection(connectionString))

do?

5个回答

13
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(); }
    }
}

4

当不再需要SqlConnection时,应该将其处理掉。在这种情况下,SqlConnection可能会留下一些未受管控的资源,您应该清理它们。 SqlConnection实现了IDisposable接口,这意味着您可以(也应该)在使用完毕后调用Dispose方法。

基本上,这是一个简写:

try {
    SqlConnection cn = new SqlConnection(connectionString);

    // whatever other code
}
finally {
    if (cn != null)
    {
        cn.Dispose();
    }
}

当您使用using时,cn的作用域也会扩展到try之外(延伸至finally)。
如需了解更多,请查看MSDN有关该主题的文章

2

确保SqlConnection在“using”范围结束时被销毁


1

使用语句可以应用于实现了 IDisposable 接口的对象。 在使用范围结束时,会调用对象的 Dispose 方法。


0

这确保了在控制离开 using() {..} 语句块时释放连接。

离开可能是由于异常、函数返回、循环中断、goto 或正常作用域离开而发生。非常方便。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接