加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 可以用花括号替换using语句吗?

发布时间:2020-12-15 07:40:59 所属栏目:百科 来源:网络整理
导读:我使用SqlConnection的using语句.它对性能有好处,因为强制调用Dispose()会更快地释放与池的连接. 但是,我意识到在使用中创建的对象无法重新定义.我不能这样做: using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(
我使用SqlConnection的using语句.它对性能有好处,因为强制调用Dispose()会更快地释放与池的连接.

但是,我意识到在使用中创建的对象无法重新定义.我不能这样做:

using (SqlConnection connection = new SqlConnection(connectionString))
   {
       connection.Open();
       //...
       connection = new SqlConnection(connectionString2);
       //...
       connection = new SqlConnection(connectionString3);
   }

我想知道我是否可以替换使用,并做这样的事情:

{
       SqlConnection connection = new SqlConnection(connectionString);

       connection.Open();
       //...
       connection = new SqlConnection(connectionString2);
       //...
       connection = new SqlConnection(connectionString3);
 }

在last}括号后,将无法访问SqlConnection.当对象超出范围时,Dispose()会立即被调用吗?

解决方法

不,在第二个例子中,事情不会自动清理(实际上,使用您拥有的代码,您将保持几个连接处于打开状态).

不仅如此,如果在使用块内抛出异常,您将失去自动清理功能.请记住,使用块分解为:

SqlConnection connection = new SqlConnection(connectionString);
try
{
    connection.Open();
    // Do work
}
finally
{
    connection.Dispose();
}

如果你真的使用不同的连接,并且每个连接在块的末尾都是Disposed,我将使用几个使用块:

using(SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Do Work
}

// First connection is disposed

using(SqlConnection connection = new SqlConnection(connectionString2))
{
    // Do More Work
}

// Second connection is disposed

using(SqlConnection connection = new SqlConnection(connectionString3))
{
    // Do More Work
}

// Last connection is dipsosed

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读