byt*_*e77 0 .net c# idisposable using-statement
当创建一个实现一个元素IDisposable,Dispose()是在结束所谓的using块还,如果抛出一个异常,如果我是正确的.
但是,在ClassB一次性元素的构造函数中创建新元素时,如果IDisposable实现了ClassB的对象,是否也会被处置?
using (ClassA a = new ClassA(new ClassB()))
{
}
Run Code Online (Sandbox Code Playgroud)
这可能适用于与之相关的类Stream.但是,这一般适用吗?
ClassB将只设置如果的Dispose方法ClassA调用就可以了处理.
class ClassA : IDisposable
{
private ClassB b;
public ClassA (ClassB b) { this.b = b; }
public void Dispose() { this.b.Dispose(); }
}
Run Code Online (Sandbox Code Playgroud)
如果不是,您需要单独处理它:
using (ClassB b = new ClassB())
using (ClassA a = new ClassA(b))
{
}
Run Code Online (Sandbox Code Playgroud)