c#

c# - Desechable usando el patrón



(5)

using (FileStream fileStream = new FileStream(path)) { // do something }

Ahora sé que el patrón de uso es una implementación de IDisposable, es decir, que se ha configurado Try / Catch / Finally y se llama a Dispose en el objeto. Mi pregunta es cómo se maneja el método Close.

MSDN dice que no se llama, pero he leído lo contrario.

Sé que FileStream hereda de Stream, que se explica aquí . Ahora que dice no anular Close () porque lo llama Dispose ().

Entonces, ¿algunas clases solo llaman a Close () en sus métodos Dispose () o lo hace utilizando la llamada Close ()?


Close () no es parte de la interfaz IDisposable, por lo que su uso no tiene forma de saber si debe llamarse o no. using solo llamará a Dispose (), pero los objetos inteligentemente diseñados se cerrarán en el método Dispose ().


En .Net clases Close () llamada Dispose (). Deberías hacer lo mismo.


La instrucción using solo conoce Dispose() , pero Stream.Dispose llamadas Close() , como se documenta en MSDN :

Tenga en cuenta que debido a los requisitos de compatibilidad con versiones anteriores, la implementación de este método difiere de la guía recomendada para el patrón Dispose. Este método llama a Cerrar, que luego llama a Stream.Dispose (Boolean).


No creo que el uso de llamadas Close (), no tenga forma de saber que debería llamar a esa función en particular. Entonces debe estar llamando a disponer, y eso a su vez está llamando a cerrar.


usando llamadas Dispose () solamente. El método Dispose () podría llamar a Close () si así es como se implementa.