2010-01-12 5 views

Répondre

13

Cela signifie que obj implémente IDisposible et seront éliminés de manière appropriée après le bloc using. Il est fonctionnellement identique à:

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

oh! Agréable! Merci pour la réponse. – Ricardo

+2

Presque à droite, using() n'implique pas une instruction catch, seulement try/finally. – Turnor

+0

@Jay Zeng, comme dans Graphics? Si j'utilise mes graphiques dans une déclaration "using" je n'aurai pas besoin de disposer? – Ricardo

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

équivaut à:

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

Presque équivalent. Dans le premier exemple, obj est hors de portée au}. Dans la seconde, il est toujours dans la portée. Similaire à l'équivalence de temps en temps. –

0

il est un moyen de champ d'un objet si la méthode est appelée Éliminez la sortie. C'est très utile pour les connexions de bases de données en particulier. une erreur de compilation se produira si l'objet n'implémente pas idisposable

0

using garantit que l'objet alloué est correctement éliminé après l'utilisation du bloc, même lorsqu'une exception non gérée se produit dans le bloc.

1

pourquoi existe t-il?

Il existe pour les classes où vous vous souciez de leur durée de vie, en particulier lorsque la classe enveloppe une ressource dans le système d'exploitation et que vous souhaitez la libérer immédiatement. Sinon, vous devrez attendre les finaliseurs du CLR (non déterministes).

Exemples, descripteurs de fichiers, connexions DB, des connexions socket, ....

+0

Il est sucre syntaxique –

+0

je ne suis pas d'accord - c'est un modèle bien connu et encourage ainsi la bonne pratique commune. pour boucle est aussi le sucre syntaxique - mais il est toujours utilisé car c'est un idiome commun aussi j'essayais d'expliquer pourquoi vous le voyez utilisé - et pourquoi vous verriez la version sans sucre – pm100