2012-10-31 22 views
1

通常我會做到這一點: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 
} 

這是否調用Dispose( )爲SqlCommand,即使我沒有把它分配給一個變量?

回答

5

即使我沒有將它分配給一個變量,是否會爲SqlCommand調用IDisposable?

號它將呼籲SqlDataReaderdrDispose(),因爲這是由表達式返回的對象。

+0

所以這是不好的做法? – Sean

+0

@SeanW是的 - 你當前的代碼不會處理'SqlCommand' - 所以使用你的「甚至是這個」選項 –