Cook Computing

 

«  Nested Using Statements  »

Friday 6 August 2004

Nested using statements can soak up a lot of indentation so Eric Gunnerson has posted a tip on how to code them more succinctly. Taking his example, instead of this:

using (StreamWriter w1 = File.CreateText("W1"))
{
    using (StreamWriter w2 = File.CreateText("W2"))
    {
        // code here
    }
}

you can write this:

using (StreamWriter w1 = File.CreateText("W1"))
using (StreamWriter w2 = File.CreateText("W2"))
{
    // code here
}

The comments are interesting. Michael Teper points out this is just a case of dropping the curly brackets for a one statement code block:

using (StreamWriter w1 = File.CreateText("W1"))
    using (StreamWriter w2 = File.CreateText("W2"))
    {
    // code here
    }
and John Rusk asks why you can't do something like this
using (StreamWriter w1 = File.CreateText("W1"), 
    StreamWriter w2 = File.CreateText("W2"))
{
    // code here
}

which I optimistically tried the first time I came across nested Using statements.

UPDATE: You can of course write:

using (StreamWriter w1 = File.CreateText("W1"), 
    w2 = File.CreateText("W2"))
{
    // code here
}

but this only works because the variables are both of the same type. It doesn't work in the more general case where different types are being declared.

Posted by at 07:23 AM. Permalink.