2009-01-02 10 views
6

Tengo algo de código que se parece a esto:¿Vuelve desde el interior de una declaración 'using'?

using (DBDataContext dc = new DBDataContext(ConnectionString)) 
{ 
    Main main = new Main 
    { 
     ClientTime = clientTime 
    }; 
    dc.Mains.InsertOnSubmit(main); 
    dc.SubmitChanges(); 
    return main.ID; 
} 

Si regreso desde el interior de un "uso", se la utiliza todavía limpiar?

Respuesta

24

Sí, y esa es una de las grandes ventajas de using.

+0

Marque esto como la respuesta, ya que es 100% correcto. – Will

+0

tentado a -1 para el juego de palabras, pero +1 de todos modos;) – johnc

+0

Es un juego de palabras recursivo ... –

3

Sí, lo hará.

12

Sí. Es exactamente el equivalente de una declaración try/finally - y se ejecutan los bloques finally, sin embargo, el bloque try sale, ya sea a través de una excepción, una declaración de retorno, o simplemente llegando al final del bloque.

1

Sí, todas las instancias de objetos que se inicializaron en la parte de adquisición de recursos de la instrucción using tendrán su método Dispose() llamado automáticamente.

+0

Solo se eliminan los objetos que se especifican en la parte de adquisición de recursos de la instrucción using y * nada * especial sucede en términos de recolección de basura. –

+0

@Jon, gracias ... No fui lo suficientemente específico ... lo que hace que mi respuesta sea incorrecta. Arreglará. – Kon

+0

@ fallen888 - Lo cambié para reflejar lo que Jon estaba diciendo, espero que no te importe –

0

Sí, se limpiará. Veo esto como el intento del pobre culo de C# para soportar el patrón Resource Acquisition Is Initialization.

+1

RAII es exclusivo de C++, porque se basa inherentemente en las características únicas de construcción/destrucción de objetos apilados de C++. C# tomó prestado el patrón de C++ porque resultó útil, pero tuvo que modificar el patrón, porque la construcción/destrucción de objetos apilados no funciona de la misma manera que en C++. – yfeldblum

+0

@Justice: es una versión larga, pero mucho más útil, del "pobre intento de culo". –

Cuestiones relacionadas