The Stream.Dispose(bool) docs说:
此方法由公共Dispose方法和Finalize方法调用。(. .Finalize调用Dispose, Dispose设置为false。
但是,Stream
及其超类MarshalByRefObject
都没有析构函数,Object
的析构函数为空。
那么Finalize
方法如何调用Stream.Dispose(bool)
呢?
Stream
是一个抽象类,因此您可以保证至少应该继承较低的一层。在继承的类中是终结器存在的地方。
我不知道他们的确切原因,但一个潜在的可能是,如果你不需要终结器,它不会强加给你,因为拥有一个非零开销,最大的成本是你的对象可能不会在第0代垃圾收集期间被收集,即使它是非常短的寿命(参见链接文章了解详细信息)。