2012-09-26 119 views
21

如何照顧在使用語句中處理掉的多個對象?你可以在一個Using塊中處理多個對象嗎?

示例代碼

using(MyClass obj = new MyClass()) 
{ 
    MyOtherClass objOC= new MyOtherClass() 
    TextReader objTR = new StringReader(...); 
    // other code 
} 

MyClass obj將被佈置在使用塊的結尾,但隨後什麼約 MyOtherClass objOCTextReader objTR。據我所知,他們不會被處置,所以我應該有一個嵌套的使用塊,如下所示?如果物體數量增加,我將需要一臺真正的寬屏幕顯示器

這是否正確?

using(MyClass obj = new MyClass()) 
{ 
    using (MyOtherClass objOC= new MyOtherClass()) 
    { 
     using (TextReader objTR = new StringReader(...)) 
     { 
      //code using all three objects 
     } 
    } 
    // other code using just `MyClass obj` 
} 

MyClass的& MyOtherClass都實現IDisposable

+1

相關:[嵌套使用語句在C#](HTTP:/ /stackoverflow.com/questions/1329739/nested-using-statements-in-c-sharp) –

回答

51

是的,你的代碼是正確的。這裏有一些你可能想要知道的其他東西...

你可以在一個using語句中聲明多個相同類型的對象。從documentation:不同類型的

using (Font font3 = new Font("Arial", 10.0f), 
      font4 = new Font("Arial", 10.0f)) 
{ 
    // Use font3 and font4. 
} 

對於使用多個對象可以使用一個行語法,以節省空間巢:

using (MyClass obj = new MyClass()) 
using (MyOtherClass objOC= new MyOtherClass()) 
using (TextReader objTR = new StringReader(...)) 
{ 
    // code using all three objects 
} 
2

是的,如果你要出示擔保對所有的人的電話Dispose(..)你必須將它們封閉內using statment就像在第二個例子。

或者您可以在單個using聲明中聲明多個對象。這是編碼風格和代碼流的問題。

相關問題