2010-01-12 22 views

Respuesta

13

Significa que obj implementa IDisposible y serán dispuestos adecuadamente de después del bloque using. Es funcionalmente lo mismo que:

{ 
    //Assumes SomeObject implements IDisposable 
    SomeObject obj = new SomeObject(); 
    try 
    { 
    // Do more stuff here.  
    } 
    finally 
    { 
    if (obj != null) 
    { 
     ((IDisposable)obj).Dispose(); 
    } 
    } 
} 
+0

¡oh! ¡Bonito! Gracias por la respuesta. – Ricardo

+2

Casi a la derecha, el uso de() no implica una instrucción catch, solo try/finally. – Turnor

+0

@Jay Zeng, como en Graphics? Si utilizo mi Graphics dentro de una declaración de "uso", ¿no tendré que deshacerme de ella? – Ricardo

5
using (object obj = new object()) 
{ 
    //random stuff 
} 

es equivalente a:

object obj = new object(); 
try 
{ 
    // random stuff 
} 
finally { 
    ((IDisposable)obj).Dispose(); 
} 
+0

Casi equivalente. En la primera muestra, obj está fuera del alcance en el}. En el segundo, todavía está en el alcance. Similar a la equivalencia for-while. –

0

es una manera de alcance de un objeto por lo que el método dispose se llama a la salida. Es muy útil para conexiones de bases de datos en particuler. se producirá un error de tiempo de compilación si el objeto no implementa el

0

using garantiza que el objeto asignado se elimina correctamente después del bloque de uso, incluso cuando se produce una excepción no controlada en el bloque.

1

por qué existe tho.

Existe para las clases en las que se preocupa por su vida útil, en particular cuando la clase envuelve un recurso en el sistema operativo y desea liberarlo inmediatamente. De lo contrario, tendrías que esperar a los finalizadores del CLR (no deterministas).

ejemplos, manipuladores de archivos, conexiones de base de datos, conexiones de socket, ....

+0

Es azúcar sintáctico –

+0

en desacuerdo - es un patrón bien conocido y por lo tanto fomenta la buena práctica común. para el bucle también es azúcar sintáctica, pero siempre se utiliza porque es una expresión común también estaba tratando de explicar por qué lo ves usado - y por qué verías la versión no azucarada – pm100

Cuestiones relacionadas