The reason 'using' is useful, is that you don't need to worry about an exception being 
thrown from your first dispose call (as if there is an exception, you'd still want to 
call cn.Close)

Kirk

-----Original Message-----
From: Peter Stephens [mailto:[EMAIL PROTECTED]] 
Sent: Thursday, 2 May 2002 8:03 p.m.
To: [EMAIL PROTECTED]
Subject: Re: [DOTNET] From C# to VB.NET


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.

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