【发布时间】:2016-06-15 13:15:41
【问题描述】:
当创建一个实现IDisposable 的元素时,Dispose() 会在using 块的末尾被调用,如果我没记错的话,如果抛出异常的话。
但是,当在一次性元素的构造函数中创建ClassB 的新元素时,如果实现了IDisposable,ClassB 的对象是否也会被释放?
using (ClassA a = new ClassA(new ClassB()))
{
}
这可能适用于与Stream 相关的类。 但是,这是否普遍适用?
【问题讨论】:
-
没有。它不是在构造函数中创建的,而是在构造函数之前创建的。
-
如果是这样的话,那就糟了。您可以创建一个实现 IDisposable 的 ClassB 并使用与此问题一样多的击键进行测试。
标签: c# .net idisposable using-statement