28

如何在 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

4

2 回答 2

61

是的,您的代码是正确的。以下是您可能需要注意的其他几件事...

您可以在单个 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 
}   
于 2012-09-26T13:42:22.637 回答
2

是的,如果你想保证Dispose(..)所有这些都被调用,你必须将它们包含在using声明中,就像在第二个例子中一样。

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

于 2012-09-26T13:42:22.700 回答