C# Language Instructions d'utilisation multiples avec un bloc


Exemple

Il est possible d'utiliser plusieurs imbriquées en using des déclarations sans ajout de plusieurs niveaux d'accolades imbriquées. Par exemple:

using (var input = File.OpenRead("input.txt"))
{
    using (var output = File.OpenWrite("output.txt"))
    {
        input.CopyTo(output);
    } // output is disposed here
} // input is disposed here

Une alternative est d'écrire:

using (var input = File.OpenRead("input.txt"))
using (var output = File.OpenWrite("output.txt"))
{
    input.CopyTo(output);
} // output and then input are disposed here

Ce qui est exactement équivalent au premier exemple.

Note: Nichée en using des déclarations peuvent déclencher la règle d' analyse du code Microsoft CS2002 (voir cette réponse pour la clarification) et générer un avertissement. Comme expliqué dans la réponse liée, il est généralement préférable de nidifier à l' using instructions.

Lorsque les types de l'instruction using sont du même type, vous pouvez les délimiter par des virgules et spécifier le type une seule fois (bien que cela soit rare):

using (FileStream file = File.Open("MyFile.txt"), file2 = File.Open("MyFile2.txt"))
{
}

Cela peut également être utilisé lorsque les types ont une hiérarchie partagée:

using (Stream file = File.Open("MyFile.txt"), data = new MemoryStream())
{
}

Le mot-clé var ne peut pas être utilisé dans l'exemple ci-dessus. Une erreur de compilation se produirait. Même la déclaration séparée par des virgules ne fonctionnera pas lorsque les variables déclarées ont des types de différentes hiérarchies.