3

在通过最近涉及 WebResponse 的一些代码进行调试后,我发现我遇到的问题是在发出另一个 WebResponse 之前我没有正确处理 WebResponse。我误入歧途,因为需要将 WebResponse 转换为 IDisposable 才能实际调用 dispose (或者您可以使用“使用”来实现相同的目标)。

所以我的问题是:

1) Microsoft 使用什么来完成此任务?

IDisposable 是一个接口,因此是公共的,但 WebResponse 以某种方式更改了要根据 MSDN doumentation 保护的访问修饰符。我认为这是不可能的。

2)以这种方式隐藏处置有什么好处?

为什么不让 webResponse.Dispose() 有效?

4

1 回答 1

6

显式接口实现:

public class Foo : IDisposable {
    void IDisposable.Dispose() { /* code here */ }
}

这可以通过任何接口方法来完成。usingAPI 知道使用实现IDisposable

请注意,此功能不应过度使用;以下内容会令人困惑,例如:

public class Foo : IDisposable {
    void IDisposable.Dispose() { /* do something */ }
    public void Dispose() { /* do something completely different */ }
}
于 2013-10-21T19:43:37.927 回答