2011-11-09 8 views
12

HttpWebReponse implementa la interfaz IDisposable, pero ¿por qué no hay un método Dispose? Solo contiene el método Close. ¿Estará el patrón using disponible para esta clase?por qué no hay un método de eliminación en HttpWebResponse

+0

El [HttpWebResponse] (http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.aspx) debería ser un método Dispose, como se especifica aquí: [WebResponse.Dispose Método @ msdn] (http://msdn.microsoft.com/en-us/library/ff928381.aspx) –

+0

BTW - Tal vez esto cambió en algún momento. ahora 'HttpWebResponse response = ...; '' 'response.Dispose();' compila. – ToolmakerSteve

Respuesta

22

HttpWebResponse implements IDisposable interface explicitly. Entonces puede llamar al Dispose solo cuando transfiere HttpWebResponse al IDisposable. El método Close de HttpWebResponse llama a Dispose internamente.

HttpWebResponse response = // assigned from somewhere 
IDisposable disposableResponse = response as IDisposable; 

disposableResponse.Dispose(); 

Desde HttpWebResponse implementa IDisposable se puede usar con un enunciado utilizando.

HttpWebResponse response = // assigned from somewhere 

using(response) { 
    // do your work; 
} 
+0

¿Qué quiere decir explícitamente – user705414

+0

@ user705414: vea esta pregunta en stackoverflow http://stackoverflow.com/questions/143405/c-interfaces-implicit-and-expllicit-implementation – Jehof

+0

¿por qué se implementa explícitamente? – jgauffin

Cuestiones relacionadas