你可以在Using块中处理多个对象吗?

如何在Using语句中处理多个对象?

示例代码

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

MyClass obj将被放置在Using块的末尾,但是那么MyOtherClass objOCTextReader objTR 。 据我所知,它们不会被处理掉,所以我应该在那里使用嵌套的Using块,如下所示? 如果对象数量增加,我将需要一个真正的宽屏幕监视器

这是下面的正确吗?

 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

是的,您的代码是正确的。 以下是您可能想要了解的其他一些事项……

您可以在单个using语句中声明多个相同类型的对象。 从文档 :

 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 } 

是的,如果你想保证所有这些的Dispose(..)调用,你必须using第二个例子中的语句将它们包含在内部。

或者您可以在单个using语句中声明多个对象。 这是编码风格和代码流的问题。