.net 为什么不是';hasht算法。处理公共?

.net 为什么不是';hasht算法。处理公共?,.net,idisposable,hashalgorithm,.net,Idisposable,Hashalgorithm,为什么HashAlgorithm.Dispose不是公共的 void IDisposable.Dispose() { this.Dispose(true); GC.SuppressFinalize(this); } 我知道这是一个显式接口实现,仍然可以调用。我正试图找出背后的原因 这就是所谓的。调用此方法的唯一方法是强制转换到IDisposable对象。这可能有用的一个很好的例子是,您有一个类,它实现了两个方法名称相同的接口,并且您希望为每个接口提供不同的实现。我理解这一点。试

为什么HashAlgorithm.Dispose不是公共的

void IDisposable.Dispose()
{
    this.Dispose(true);
    GC.SuppressFinalize(this);
}

我知道这是一个显式接口实现,仍然可以调用。我正试图找出背后的原因

这就是所谓的。调用此方法的唯一方法是强制转换到
IDisposable
对象。这可能有用的一个很好的例子是,您有一个类,它实现了两个方法名称相同的接口,并且您希望为每个接口提供不同的实现。

我理解这一点。试图找出背后的原因。我从未见过IDisposable的显式实现。编辑了一个问题,让我更清楚。虽然我不知道在
HashAlgorithm
类中显式实现
IDisposable
接口的原因,但我可能会说这是一个糟糕的做法。尽管using块将与具有显式
IDisposable
实现的类一起工作,探索对象模型的开发人员可能没有注意到对象有一个
Dispose
方法,因此可能没有利用早期清理。@DarinDimitrov:IDisposable的显式实现在实现不起任何作用并且类希望公布它不是的情况下是很好的有必要在已知的特定类型的事物上调用它。我认为实现这种不做任何事情的方法的正确方法是显式地实现一个空方法;如果
Dispose
方法如上图所示链接,则显式实现是不合适的,但某些编码策略可能要求所有Dispose实现如图所示链接。