Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 能否在使用块中处置多个对象?_C#_.net - Fatal编程技术网

C# 能否在使用块中处置多个对象?

C# 能否在使用块中处置多个对象?,c#,.net,C#,.net,如何在Using语句中处理多个对象 示例代码 using(MyClass obj = new MyClass()) { MyOtherClass objOC= new MyOtherClass() TextReader objTR = new StringReader(...); // other code } MyClass obj将在Using块的末尾处理,但是接下来呢 MyOtherClass objOC和TextReader objTR。据我所知,它们不会被

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

示例代码

using(MyClass obj = new MyClass())
{
    MyOtherClass objOC= new MyOtherClass()
    TextReader objTR = new StringReader(...);  
    // other code
}
MyClass obj
将在Using块的末尾处理,但是接下来呢
MyOtherClass objOC
TextReader 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

是的,如果您想保证
Dispose(…)
调用所有这些类,您必须使用第二个示例中的
语句将它们封装在


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

是的,您的代码是正确的。这里还有一些你可能想知道的事情

可以在一个using语句中声明同一类型的多个对象。从:

要使用不同类型的多个对象,可以使用单行语法嵌套以节省空间:

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