虽然有很多关于IDisposable
在 SO 上找到,我还没有找到答案:
我通常遵循这样的做法:当我的一个班级拥有一个IDisposable
对象然后它也实现IDisposable
并打电话Dispose
在拥有的对象上。然而最近我遇到了一个类,它实现了IDisposable
明确地阻止我直接调用Dispose
强迫我施放它,我觉得这很烦人而且没有必要。
所以问题是:为什么以及何时想要使用显式接口实现IDisposable
?我知道显式实现接口是有充分理由的,但关于IDisposable
我不太清楚原因。
我想说明确实现是不寻常的IDisposable.Dispose
除非您有替代的等效方法(例如 Close)。
在这种情况下,您的包装类可以调用 Close 而不是强制转换。
一个例子是WebResponse
框架
CLR 安全团队的设计工程师 Shawn Farkas 写道MSDN杂志 http://msdn.microsoft.com/en-us/magazine/cc163392.aspx that
尽管 using 块可以与具有显式 IDisposable 实现的类一起使用,但我建议类永远不要以这种方式实现接口。如果您显式实现 IDisposable,则在 Visual Studio® 中使用 IntelliSense® 探索对象模型的开发人员将不会注意到该对象具有 Dispose 方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)