当我在课堂上找到这个区域时,我只是整理了一些代码:
#region IDisposable Members
void IDisposable.Dispose()
{
}
#endregion
现在明白这是为IDisposable接口实现Dispose方法,我知道类声明说这个类将实现IDisposable接口。
我不明白的原因是:
void IDisposable.Dispose()
而不是:
public void Dispose()
我猜IDisposable.Dispose明确指出这是实现IDisposable接口的Dispose?这是正确的吗?这样做有什么好处?
答案 0 :(得分:4)
这是explicit interface implementation。
这意味着只有IDisposable
类型的变量才能在此类上调用Dispose
。
这样做“隐藏”Dispose
方法,当与类类型的变量一起使用时 - 如果没有首先转换为IDisposable
,它将无法直接调用它。实施者有可能是故意这样做的。
此外,如果该类要实现自己的Dispose
(或从也定义Dispose
方法的类/接口继承/实现),这将允许存在多个实现。
答案 1 :(得分:0)
那是explicit interface implementation。如果一个类实现了几个具有相同方法的接口,则非常有用。