C# Language Molteplici utilizzo di istruzioni con un blocco

Esempio

È possibile utilizzare più nidificate using dichiarazioni senza aggiunta di più livelli di parentesi nidificate. Per esempio:

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

Un'alternativa è scrivere:

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

Quale è esattamente equivalente al primo esempio.

Nota: le istruzioni nidificate using potrebbero attivare la regola CS2002 (vedere questa risposta per chiarimenti) e generare un avviso. Come spiegato nella risposta collegata, è generalmente sicuro annidare using istruzioni.

Quando i tipi all'interno dell'istruzione using sono dello stesso tipo, puoi separarli con virgole e specificare il tipo una sola volta (sebbene questo sia raro):

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

Questo può essere utilizzato anche quando i tipi hanno una gerarchia condivisa:

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

La parola chiave var non può essere utilizzata nell'esempio precedente. Si verificherebbe un errore di compilazione. Anche la dichiarazione separata da virgole non funzionerà quando le variabili dichiarate hanno tipi di gerarchie diverse.