【发布时间】:2015-06-21 21:28:12
【问题描述】:
Stream 类为什么要实现 IDisposable? 我认为 Stream 类本身没有任何非托管资源。 当然,有些子类有非托管资源(例如 FileStream),但并非所有子类都有非托管资源(例如 MemoryStream)。
如果上述问题的答案是“因为Stream类的子类可能有非托管资源”,那么为什么Object类不实现IDisposable呢?
【问题讨论】:
-
真的很难说,我们可以假设,或假设,或考虑,但除非图书馆平台的人之一回答,否则我们无法知道。很可能是因为当您将 Stream 对象传递给 StreamReader(作为实例),然后处置 StreamReader 时,Stream 也会被处置。由于大多数实际的 Stream 实现都会以某种方式与资源相关,我猜他们只是从一开始就非常清楚地表明这是预期的。