MCS*_*MCS 17 c# idisposable explicit-interface
我使用的是FtpWebResponse类,但没有看到Dispose方法. 事实证明,该类实现了IDisposable,但是明确地这样做,因此在调用Dispose之前必须先将实例强制转换为IDisposable:
// response is an instance of FtpWebResposne
((IDisposable) response).Dispose();
Run Code Online (Sandbox Code Playgroud)
为什么像这样的类的设计者会选择明确地实现IDisposable?正如Anthony Pegram所说,以这种方式做事掩盖了这样一个事实,即对象应该为每次使用课程时都没有查阅文档的普通开发人员处理.
Ste*_*ary 15
如果类具有Close与之完全相同的方法,则通常会执行此操作Dispose.原始Dispose隐藏在显式实现中,因此完全相同的方法没有两个名称.
它在这里正式推荐:
如果这样的术语是标准的,那么实现Close方法以进行清理,例如与文件或套接字一样.这样做时,建议您将Close实现与Dispose相同...
考虑明确地实现接口成员以隐藏成员并添加具有更好名称的等效成员.
有时,特定于域的名称比Dispose更合适.例如,文件封装可能希望使用方法名称Close.在这种情况下,请私下实现Dispose并创建一个调用Dispose的公共Close方法.
(PS我不同意这个惯例.)
| 归档时间: |
|
| 查看次数: |
2269 次 |
| 最近记录: |