IDisposable.Dispose()作为方法名称是什么意思?

时间:2011-11-24 10:43:10

标签: c# methods interface declaration

当我在课堂上找到这个区域时,我只是整理了一些代码:

    #region IDisposable Members

        void IDisposable.Dispose()
        {
        } 

     #endregion

现在明白这是为IDisposable接口实现Dispose方法,我知道类声明说这个类将实现IDisposable接口。

我不明白的原因是:

void IDisposable.Dispose()

而不是:

public void Dispose()

我猜IDisposable.Dispose明确指出这是实现IDisposable接口的Dispose?这是正确的吗?这样做有什么好处?

2 个答案:

答案 0 :(得分:4)

这是explicit interface implementation

这意味着只有IDisposable类型的变量才能在此类上调用Dispose

这样做“隐藏”Dispose方法,当与类类型的变量一起使用时 - 如果没有首先转换为IDisposable,它将无法直接调用它。实施者有可能是故意这样做的。

此外,如果该类要实现自己的Dispose(或从也定义Dispose方法的类/接口继承/实现),这将允许存在多个实现。

答案 1 :(得分:0)

那是explicit interface implementation。如果一个类实现了几个具有相同方法的接口,则非常有用。