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

时间:2014-08-21 01:45:19

标签: .net finalizer bufferedstream

Stream.Dispose(bool) docs说:

  

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

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

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

1 个答案:

答案 0 :(得分:2)

Stream是一个抽象类,因此可以保证至少应该继承一层低层。 In that inherited class是终结器所在的位置。

我不知道他们的确切原因,但可能是因为you don't need the finializer由于非零开销而不强迫你,最大的成本是你的对象可能不会被收集在Gen 0垃圾收集期间,即使它非常短暂(详见this linked article)。