2

Stream.Dispose (bool) 文档说:

此方法由公共 Dispose 方法和 Finalize 方法调用。[..] Finalize 调用 Dispose 并将 disposing 设置为 false。

但是,Stream它的超类和它的超类MarshalByRefObject都没有析构函数,并且 的析构函数Object是空的。

那么如何Stream.Dispose(bool)Finalize方法调用呢?

4

1 回答 1

2

Stream是一个抽象类,因此您可以保证至少应该继承较低的一层。在那个继承的类中是终结器存在的地方。

我不知道他们的确切原因,但一个可能的原因是,如果你不需要终结器,它不会因为拥有一个非零开销而强加给你,最大的成本是你的对象可能不会在期间被收集Gen 0 垃圾收集,即使它的生命周期很短(有关详细信息,请参阅此链接文章)。

于 2014-08-21T02:06:44.067 回答