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.