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

前端之家收集整理的这篇文章主要介绍了c# – 可以用花括号替换using语句吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用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

猜你在找的C#相关文章