我刚刚开始学习 IDisposable 和 Dispose()。我还阅读了有关 Dispose() 的非托管资源的概念和几个用例。
但是,我在我正在研究的一些源代码中遇到了空的 Dispose() 方法。我已经阅读了这个论坛上关于空 Dispose() 的所有帖子,但仍然不明白。
请问有空的 Dispose() 方法的目的是什么,为什么首先要实现?
代码:
public class Counter : IDisposable
{
public double AverageCount { get { return Count.AverageCount; }}
...
public readonly Counter Counter;
internal ReadOnlyCounter(Counter counter)
{
Counter = counter;
}
public void Dispose() { }
}
Run Code Online (Sandbox Code Playgroud)
在给出的示例中,它没有任何作用。
在某些情况下,存在空Dispose()是因为该类型以多态方式使用,并且某些实现相同模式的类型可能需要处理 - 这MemoryStream是一个很好的例子(对于许多Stream类型,处理是必要的 - 所以它很有用在基本Stream类型上强制执行它- 但是:MemoryStream这里没有什么有趣的说法)。
如果空Dispose()方法是virtual,它可能更有意义 - 但同样:这又回到了多态性。