【发布时间】:2019-03-26 11:56:30
【问题描述】:
在下文中,我将一次性对象作为参数传递给构造函数,然后执行一些操作,仅此而已。构造函数除了设置 DisposableObject 的局部变量实例之外什么也不做。
我是否相信即使在 What() 调用中出现异常时,一次性用品仍会被处置?
如果代码在 for 循环中,则两个对象也会超出范围并被垃圾回收(我的 App Domain 中只能有这个 IDisposable 类的一个实例)。
using (var disposableObject = new DisposableObject())
{
var simpleObject= new Simple(disposableObject);
simpleObject.Whatever();
}
【问题讨论】:
-
是的,如果
disposableObject已经创建,实例将被disposed。 -
“我的 App Domain 中只能有这个 IDisposable 类的一个实例” 这似乎是一个奇怪的设计选择。
-
我们不能保证GC(垃圾收集器)会运行(更不用说收集实例了)
-
@Zahar Peled,我同意,但它是第 3 方对象,我无法控制
标签: c# garbage-collection idisposable