这两个到 ADO.NET 的连接是否相同(启用连接池)?

Are these two connections to ADO.NET the same (with connection pooling enabled)?

第二次使用有问题吗(代码段2)?如果是,问题是什么?

// ---Code snippet 1---
IDbConnection connection = new SqlConnection(connStr)
using(connection)
{
    connection.Open(); // Open a connection in “using”
    todo...
}


// ---Code snippet 2---
IDbConnection connection = new SqlConnection(connStr)
connection.Open(); // Open a connection outside “using”
using(connection) 
{ 
    todo...
}

using 语句只是用于正确处理 IDisposable 对象的内置语言支持,使用它您可以确保您的一次性对象在应该处理的时候处理。

它基本上转化为一个 try-finally 对,在 finally 块中有一个 dispose 调用。 您可以阅读有关 using 语句 here.

的更多信息

就是说,您应该将 using 关键字放在您创建一次性对象的第一条语句中,因此您的代码的正确版本是:

using (var connection = new SqlConnection(connStr))
{
    connection.Open(); // Open a connection in “using”
    todo...
}

我认为 using 关键字的位置对连接对象的作用或外观没有任何影响。