Thank you Mattias,

I had never considered that multiple using statements before the code block
were valid. I certainly haven't seen it used like this before. Your second
technique is also interesting except that it requires the overhead of the
cast.

My typical pattern is:

SqlConnection cn = null;
SqlCommand cmd = null;
try
{
        cn = new SqlConnection(...);
        cmd = cn.CreateCommand();

        // Do something
}
finally
{
        if(cmd != null) cmd.Dispose();
        if(cn != null) cn.Close();
}

This keeps everything strongly typed from the start. Still your first
technique is intriguing in that it also eliminates the chance of forgetting
the cleanup code in the finally block...

--
Peter


> Mattias Sjögren spake:
>
> Peter,
>
> >I will often use the try ... finally pattern in C# if there is
> more than one
> >type of resource to clean up. The using statement only supports
> one type at
> >a time.
>
> Yes, but you can easily nest them
>
> using ( DisposableType1 d1 = new DisposableType1() )
> using ( DisposableType2 d2 = new DisposableType2() )
> using ( DisposableType3 d3 = new DisposableType3() ) {
>    // ...
> }
>
> or
>
> using ( IDisposable d1 = new DisposableType1(), d2 = new
> DisposableType2() ) {
>    DisposableType1 dt1 = d1 as DisposableType1;
>    DisposableType2 dt2 = d2 as DisposableType2;
>    // ...
> }
>
>
> Mattias

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to