C# OLEDB命令,两个连续的“;使用;

C# OLEDB命令,两个连续的“;使用;,c#,oledbconnection,oledbcommand,C#,Oledbconnection,Oledbcommand,使用两个连续的“using”,当从{}退出时,两个连接都会被释放吗 using(OleDbConnection con = new OleDbConnection(conString)) using(OleDbCommand command = con.CreateCommand()) { } 那里只有一个连接,一个命令使用相同的连接。两者都将被处置 这实际上是: using(OleDbConnection con = new OleDbConnection(conString)) {

使用两个连续的“using”,当从{}退出时,两个连接都会被释放吗

using(OleDbConnection con = new OleDbConnection(conString))
using(OleDbCommand command = con.CreateCommand())
{
}
那里只有一个连接,一个命令使用相同的连接。两者都将被处置

这实际上是:

using(OleDbConnection con = new OleDbConnection(conString))
{
    using(OleDbCommand command = con.CreateCommand())
    {
    } // command will be disposed here
} // con will be disposed here

是的,没错。。。
OleDbConnection
OleDbCommand
都将在
}
行中处理。哪两个连接?我只看到一个。但在这种情况下,两个对象都会。在诸如
if
using
之类的块周围添加大括号
{}
,总是可以更清楚地知道何时会发生什么,这也是一种好的做法。基本上与
if(condition)Do()相同
如果(条件){Do();}