La déclaration using
peut nuire à la performance dans le sens où il faudra plus de temps à courir, mais cela ne devrait pas être votre préoccupation dans les cas comme celui-ci. Si un type implémente IDisposable
il devrait vraiment être enveloppé dans une instruction using
afin qu'il puisse nettoyer après lui-même.
Ce code de nettoyage prendra plus de temps à s'exécuter que pas de code de nettoyage bien sûr, c'est pourquoi je dis que l'instruction using
prendra plus de temps à s'exécuter. Mais cela ne signifie pas que vous ne doit pas avoir l'instruction using
. Je pense que vous devrait utiliser l'instruction using
même si cela peut prendre plus de temps pour s'exécuter. Je suppose que ce que j'essaie de dire, c'est que vous comparez des pommes à des oranges, car les comparaisons de performance n'ont de sens que lorsque le code comparé crée une sortie identique et des effets secondaires identiques. Vos exemples ne le font pas, c'est pourquoi je ne pense pas que ce soit un problème de performance.
La meilleure pratique dans cette situation est d'utiliser la déclaration using
sur les types qui mettent en œuvre IDisposable
indépendamment du fait que la déclaration using
fera la course méthode plus. Si vous avez besoin de savoir comment beaucoup plus longtemps il fonctionnera alors vous devez employer un profileur pour identifier si le code en question crée un goulot d'étranglement.
OK ce genre de logique. Le code que j'ai posté provient d'une interface que je construis, mais il n'implémente pas la méthode disposer. Je suppose que je pourrais l'ajouter et l'appeler dans la section principale, mais d'après ce que vous dites, il serait préférable à long terme d'envelopper chaque segment dans sa propre déclaration Utilisation pour prendre soin de l'élimination, n'est-ce pas? – Anders
J'imagine que ma question était mal formée. Peut-être que les meilleures pratiques à la place: Quelle est la meilleure pratique pour les requêtes LINQ en C#? – Anders
Ne pas * ajouter * une implémentation de 'IDisposable' si elle n'existe pas et n'est pas nécessaire. Si vous n'avez pas besoin de disposer de ressources non gérées, vous n'avez pas besoin de l'interface! :) Pour plus d'informations, veuillez consulter http://msdn.microsoft.com/fr-fr/library/system.idisposable.aspx. –