C# IDisposable不指定给变量

C# IDisposable不指定给变量,c#,.net,idisposable,C#,.net,Idisposable,通常我会这样做: using (SqlCommand cmd = new SqlCommand("XXXX", cnn)) { using (SqlDataReader dr = cmd.ExecuteReader()) { //xxxxxx } } 甚至这个: using (SqlCommand cmd = new SqlCommand("XXXX", cnn)) using (SqlDataReader dr = cmd.ExecuteReade

通常我会这样做:

using (SqlCommand cmd = new SqlCommand("XXXX", cnn))
{
    using (SqlDataReader dr = cmd.ExecuteReader())
    {
        //xxxxxx  
    }
}
甚至这个:

using (SqlCommand cmd = new SqlCommand("XXXX", cnn))
using (SqlDataReader dr = cmd.ExecuteReader())
{
    //xxxxxx  
}
但是这个呢:

using (SqlDataReader dr = new SqlCommand("XXXX", cnn).ExecuteReader())
{
    //xxxxxx  
}
即使我没有将其分配给变量,该调用是否会对SqlCommand进行Dispose()调用

即使我没有将其分配给变量,该调用是否可以为SqlCommand调用IDisposable

否。它将在
SqlDataReader
dr
)上调用
Dispose()
),因为这是表达式返回的对象

即使我没有将其分配给变量,该调用是否可以为SqlCommand调用IDisposable


否。它将在
SqlDataReader
dr
)上调用
Dispose()
,因为这是表达式返回的对象。

@SeanW Yes-您当前的代码不会处理
SqlCommand
-所以请使用“甚至这个”option@SeanW是-您当前的代码不会处理
SqlCommand
-因此请使用“甚至这个”选项