清空 Dispose() 方法 C#

Yeo*_*Yeo 3 c#

我刚刚开始学习 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)

Mar*_*ell 8

在给出的示例中,它没有任何作用。

在某些情况下,存在空Dispose()是因为该类型以多态方式使用,并且某些实现相同模式的类型可能需要处理 - 这MemoryStream是一个很好的例子(对于许多Stream类型,处理是必要的 - 所以它很有用在基本Stream类型上强制执行它- 但是:MemoryStream这里没有什么有趣的说法)。

如果空Dispose()方法是virtual,它可能更有意义 - 但同样:这又回到了多态性。