Search code examples
c#using-statement

C# Using keyword- nested in single line


Usually I was doing something like that (just a example):

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

Isn't better to do just:

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

But I'm not sure if in this short syntax all resources will be disposed (Stream) or only XmlTextReader?

Thanks in advance for your answer.


Solution

  • No; that won't guarantee that the Stream is disposed if the XmlTextReader constructor throws an exception. But you can do:

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