首页 > 解决方案 > 空 Dispose() 方法 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() { }
}

标签: c#

解决方案


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

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

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


推荐阅读