如何处理在Using语句中处理掉的多个对象?
示例代码
using(MyClass obj = new MyClass())
{
MyOtherClass objOC= new MyOtherClass()
TextReader objTR = new StringReader(...);
// other code
}
MyClass obj
将在使用块的末尾处理,但那么呢
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
答案 0 :(得分:57)
是的,您的代码是正确的。以下是您可能想要了解的其他一些事项......
您可以在单个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
}
答案 1 :(得分:2)
是的,如果你想保证对Dispose(..)
所有人的using
电话,你必须将它们包含在using
声明中,如第二个例子所示。
或者您可以在单个{{1}}语句中声明多个对象。这是编码风格和代码流的问题。