I have a question today involving the StreamReader class. Specifically initializing this class using the filename parameter for example:

TextReader tr = new StreamReader(fileName);

Obviously when this action is finished, its important to close the stream like this:

 tr.Close();

I would like to have this in a try / finally, the problem is I can't find a way to do this. Here are some variations I have found that DO NOT work:

    try
        {
            var serializer = new XmlSerializer(type);
            TextReader tr = new StreamReader(fileName);
            var obj = serializer.Deserialize(tr);
        }
    finally
        {
            tr.Close();    
        }

and worse:

     TextReader tr;  
        try
        {
            var serializer = new XmlSerializer(type);
            tr = new StreamReader(fileName);
            var obj = serializer.Deserialize(tr);
        }
        finally
        {
            tr.Close();    
        }

So is it possible to have a StreamReader close in a finally?

Edit
Report