IDisisposable而不分配变量

时间:2012-10-31 19:05:24

标签: 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.ExecuteReader())
{
    //xxxxxx  
}

但是这个怎么样:

using (SqlDataReader dr = new SqlCommand("XXXX", cnn).ExecuteReader())
{
    //xxxxxx  
}

是否为SqlCommand调用Dispose(),即使我没有将它分配给变量?

1 个答案:

答案 0 :(得分:5)

  

这是否为SqlCommand调用IDisposable,即使我没有将它分配给变量?

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