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



The Stream.Dispose(bool) docs说:

此方法由公共Dispose方法和Finalize方法调用。(. .Finalize调用Dispose, Dispose设置为false。

但是,Stream及其超类MarshalByRefObject都没有析构函数,Object的析构函数为空。

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

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

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

相关内容

  • 没有找到相关文章

最新更新