C# 这段代码做什么:使用(SqlConnection cn=newsqlconnection(connectionString))

C# 这段代码做什么:使用(SqlConnection cn=newsqlconnection(connectionString)),c#,C#,什么是 using (SqlConnection cn = new SqlConnection(connectionString)) do?确保SqlConnection在“使用”范围结束时被销毁它在不再需要后处理SqlConnection。在这种情况下,SqlConnection可能会留下一些非托管资源,您应该清理它们SqlConnection实现了IDisposable,这意味着您可以(应该)在使用完Dispose后调用它 它基本上是一个缩写: try { SqlConnectio

什么是

using (SqlConnection cn = new SqlConnection(connectionString))

do?

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

它在不再需要后处理
SqlConnection
。在这种情况下,
SqlConnection
可能会留下一些非托管资源,您应该清理它们
SqlConnection
实现了
IDisposable
,这意味着您可以(应该)在使用完
Dispose
后调用它

它基本上是一个缩写:

try {
    SqlConnection cn = new SqlConnection(connectionString);

    // whatever other code
}
finally {
    if (cn != null)
    {
        cn.Dispose();
    }
}
当您使用
时,
cn
的范围也会扩展到
try
(到
最后
)之外


如果您想了解更多信息,请查看此主题。

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

new SqlConnection(connectionString)
根据提供的连接字符串创建新的
SqlConnection
实例

SqlConnection cn = ...
将其分配给保存构造的连接对象的新局部变量
cn
(作用域为
using
语句)

using(...)
是使用
语句的
-它确保连接在最后是
Dispose()
-d,即使引发异常(在这种情况下
Dispose()
意味着关闭它/释放到池中等)

整个代码基本上是:


以下是MSDN文档的一些链接:


.

这确保在控件使用(){..}子句离开时释放连接

离开可能是由于异常、函数返回、从循环中断、转到或范围的正常离开而发生的。非常方便

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