Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Stream.Dispose (bool) 文档说:
此方法由公共 Dispose 方法和 Finalize 方法调用。[..] Finalize 调用 Dispose 并将 disposing 设置为 false。
但是,Stream它的超类和它的超类MarshalByRefObject都没有析构函数,并且 的析构函数Object是空的。
Stream
MarshalByRefObject
Object
那么如何Stream.Dispose(bool)被Finalize方法调用呢?
Stream.Dispose(bool)
Finalize
Stream是一个抽象类,因此您可以保证至少应该继承较低的一层。在那个继承的类中是终结器存在的地方。
我不知道他们的确切原因,但一个可能的原因是,如果你不需要终结器,它不会因为拥有一个非零开销而强加给你,最大的成本是你的对象可能不会在期间被收集Gen 0 垃圾收集,即使它的生命周期很短(有关详细信息,请参阅此链接文章)。