337 votes

Utilisations de "using" en C #

Les utilisateurs de Kokos ont répondu aux merveilleuses caractéristiques cachées de C # en mentionnant le mot-clé using . Pourriez-vous préciser ceci? Quels sont les bons usages de l' utilisation ?

506voto

paulwhit Points 2325

La raison de l’instruction « using » consiste à s’assurer que l’objet est toujours disposé correctement, et il ne requiert pas de code explicite pour s’assurer que cela se passe.

Selon http://www.codeproject.com/KB/cs/tinguusingstatement.aspx, le Common Language Runtime .NET convertit

À

130voto

BlackTigerX Points 3569

Depuis beaucoup de gens ne sais toujours pas que vous pouvez faire :

Je suppose que beaucoup de gens ne sais toujours pas que vous pouvez faire :

98voto

Joel Coehoorn Points 190579

Ce genre de choses :

Ce SqlConnection sera fermée sans avoir besoin d’appeler explicitement la. Function Close() et cela arrivera même si une exception est levée, sans la nécessité d’un bloc try/catch/finally.

31voto

MagicKat Points 5192

à l’aide peut être utilisé pour appeler IDisposable. Il peut également servir de types d’alias.

21voto

David Mitchell Points 1742

à l'aide, dans le sens de

using (var foo = new Bar())
{
  Baz();
}

Est en fait un raccourci pour un try/finally bloc. Il est équivalent au code:

var foo = new Bar();
try
{
  Baz();
}
finally
{
  foo.Dispose();
}

Vous noterez, bien sûr, que le premier extrait est beaucoup plus concis que la seconde et aussi qu'il existe de nombreuses sortes de choses que vous pouvez faire que le nettoyage, même si une exception est levée. De ce fait, nous avons trouvé une classe que nous appelons le Champ d'application qui permet d'exécuter du code arbitraire dans la méthode dispose. Ainsi, par exemple, si vous avez une propriété appelée IsWorking que vous avez toujours voulu défini à false, après avoir essayé d'effectuer une opération, vous auriez du faire comme ceci:

using (new Scope(() => IsWorking = false))
{
  IsWorking = true;
  MundaneYetDangerousWork();
}

Vous pouvez en savoir plus sur notre solution et comment nous avons dérivé d'elle ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X