文档中提到:
只有在类型直接使用非托管资源时才应实现IDisposable。
对于我这种主要使用Java的人来说,这听起来很奇怪。假设我有一个包含IDisposable成员的类:
class Foo : IDisposable {
private StreamWriter sw;
...
}
... 假设这个类被用作一种过滤器,它接受字符串并对其进行修改,然后使用 StreamWriter sw
输出结果。我想将这个类用作一种 Writer。
为什么我不想实现 Dispose(bool)
并调用 sr.Dispose()?
如果我是用 Java 编程,这就是我必须做的事情(Java 的 Closable
接口类似于 .NET 的 IDisposable
,但在某些方面有所不同)。然而文档说我不应该这样做,因为我没有直接使用非托管资源。
如果我不重写 Dispose(bool)
,当我离开由 using
语句开始的块时,如何处理托管资源 sw
的清理?