2011-01-03 17 views
5

"utilizando" bloques se escriben a menudo como esto:¿Necesita establecer una referencia explícita a un objeto nuevo en un bloque de uso?

using (new Foo()) { ... } 

lugar de la siguiente manera:

using (var f = new Foo()) { ... } 

En el primer caso, en que se establece ninguna referencia explícita al nuevo objeto de Foo, ¿hay ¿Existe peligro de que el objeto pueda ser eliminado antes del final del bloque? ¿Si no, porque no?

+0

A menudo? _______ –

+0

¡Gracias por las rápidas respuestas! –

Respuesta

3

No, no necesita establecer una referencia explícita, a menos que necesite acceder al objeto con el bloque de alcance. No hay peligro de que la variable sin referencia se elimine antes de tiempo porque solo se desecha cuando se sale del alcance.

14

No hay peligro de que se elimine antes de tiempo.

El primer ejemplo todavía crea una referencia explícita al objeto que se crea. Esa referencia no tiene nombre y no puede usarse en su código.

El bloque using mantendrá la referencia (aunque no tenga nombre) hasta el final del bloque.

+0

Editado solo un error "es" –

+0

@Petar - Doh! Gracias por la edición. –

Cuestiones relacionadas