通过最近涉及WebResponse的一些代码调试后,我发现我遇到的问题是我在发出另一个之前没有正确处理WebResponse。因为WebResponse需要被转换为IDisposable以便实际调用dispose(或者你可以使用“using”来实现相同的目标),所以我误入歧途。
所以我的问题是:
1)Microsoft用什么来实现这个目标?
IDisposable是一个接口,因此是公共的,但不知何故,WebResponse根据MSDN号码改变了要保护的访问修饰符。我认为这是不可能的。
2)以这种方式隐藏处置有什么好处?
为什么不让webResponse.Dispose()有效?
答案 0 :(得分:6)
显式接口实现:
public class Foo : IDisposable {
void IDisposable.Dispose() { /* code here */ }
}
这可以使用任何接口方法完成。 using
API知道使用IDisposable
实现。
请注意,此功能不应过度使用;以下内容会令人困惑,例如:
public class Foo : IDisposable {
void IDisposable.Dispose() { /* do something */ }
public void Dispose() { /* do something completely different */ }
}