【发布时间】:2016-06-25 00:41:06
【问题描述】:
我搜索并没有找到确切的答案。我正在学习Implementing Dispose 的正确方法。我想知道为什么需要 2 个布尔值。
- 为什么需要处理?只有析构函数调用 Dispose (false),为什么析构函数不强制释放托管资源?
- 为什么需要处置?如果这个对象已经被释放了,怎么调用 Dispose 方法呢?你能告诉一个场景,当 Dispose 被调用并且被处理为 true 时?
【问题讨论】:
-
@Shazi 谢谢,我会详细阅读。
-
如果 disposing 参数为 false,则该对象未被释放。它是运行的终结器(又名析构函数)。这很重要,这意味着您不能处理存储在字段中的任何对象,它们可能已经完成。您需要 disposed 以确保安全,客户端代码可能会多次调用 Dispose。编写自己的终结器并实现一次性模式有一个非常理想的特性,99.9% 的时间都是错误的。框架类需要这样做,而不是你。
标签: c# .net memory-management idisposable