2010-07-09 6 views
1

Possible en double:
Close and Dispose - which to call?Quelle est la différence entre Dispose et Close?

Salut,

Après avoir lu certaines pages Web, je ne comprends toujours pas la différence entre Dispose et méthodes Fermer en C#.

Prenons un exemple:

using (SqlConnection sqlConnection = new SqlConnection()) 
{ 
    // Execute an insert statement (no breaks, exceptions, returns, etc.) 
} 

et une seconde:

SqlConnection sqlConnection = new SqlConnection(); 
// Execute an insert statement (no breaks, exceptions, returns, etc.) 
sqlConnection.Close(); 

-ce que ces deux morceaux de code similaire? Les deux sont disponibles que pour des raisons pratiques (car il y a des situations où using est pas une solution? Ou il y a une différence dans le comportement?

Alors, pourquoi certaines classes fournissent la méthode Close et quand dois-je mettre une méthode Close dans IDisposable classes I créer?

+4

Dupliquer http://stackoverflow.com/questions/61092/close-and-dispose-which-to-call – chilltemp

+0

Merci de noter qu'il s'agit d'un doublon. J'ai cherché avant de poster, mais je ne l'ai pas trouvé. Je ferme la question. –

Répondre

3

Vos deux extraits de code sont équivalentes.

classes .NET qui mettent en œuvre IDisposable et d'exposer Close, faites-le fait saillie pour la commodité d'avoir une méthode Close qui a. un nom légèrement plus convivial Généralement, on appelle la autre

Si vous implémentez votre propre classe jetable, vous n'aurez pas besoin d'ajouter une méthode Close, sauf si vous préférez en avoir une.

+0

C'est presque correct. 'Dispose' et' Close' sont les mêmes * sauf * pour les classes de connexion à la base de données. –