尽管在SO上有很多关于IDisposable的问答,但我还没有找到答案:

我通常遵循这样的做法:当我的一个类拥有IDisposable对象时,它还将实现IDisposable并在拥有的对象上调用Dispose。但是最近我遇到了一个类,该类显式实现了IDisposable,从而阻止了我直接调用Dispose强制我强制转换它,这使我感到烦恼和不必要。

那么问题来了:为什么以及何时要使用IDisposable的显式接口(interface)实现?我知道明确地实现接口(interface)是有充分的理由,但是对于IDisposable来说,原因对我来说并不十分清楚。

最佳答案

我要说的是,除非您有其他等效方法(例如Close),否则要有一个IDisposable.Dispose的显式实现,这是不寻常的。

在这种情况下,您的包装器类可以调用Close而不是强制转换。

一个示例是Framework WebResponse类。有趣的是,.NET 4中有一个公共(public)的Dispose方法,因此也许微软现在已经决定明确的实现可能不是一个好习惯。

CLR安全团队的设计工程师Shawn Farkas在MSDN magazine中写道:

关于c# - 明确实现IDisposable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5577252/

10-12 07:40