C# Utilizzo di parole chiave nidificate in una riga singola

C# Utilizzo di parole chiave nidificate in una riga singola

No; ciò non garantisce che il Stream viene eliminato se il XmlTextReader costruttore genera un'eccezione. Ma puoi fare:

using (Stream xmlStream = client.OpenRead(xmlUrl))
using (XmlTextReader xmlReader = new XmlTextReader(xmlStream))
{
    // use xmlReader 
}

Con C# 8 puoi eliminare anche il singolo livello di annidamento:

private static void NewMultipleUsingDeclarations()
{
    using var xmlStream = client.OpenRead(xmlUrl);
    using var xmlReader = new XmlTextReader(xmlStream);
    
    // use xmlReader 
}

Internamente il compilatore crea un try catch equivalente come con la versione indentata e elimina sia lo stream che il reader alla fine dell'ambito delle variabili using, in questo caso, alla fine del metodo.

Vedi di più:

  • Una descrizione più dettagliata nel blog di Christian Nagel sulla nuova dichiarazione using
  • La documentazione ufficiale.

Che dire (lo uso ora):

using (Stream xmlStream = client.OpenRead(xmlUrl))
using (XmlTextReader xmlReader = new XmlTextReader(xmlStream))
{
...
}

Il secondo utilizzo è l'utilizzo di riferimento dal primo - non è necessario avere parentesi.