Using statement vs. IDisposable.Dispose()

.net, c#, idisposable, using, vb.net

Solution

`using` is basically the equivalent of:

try
{
  // code
}
finally
{
  obj.Dispose();
}

So it also has the benefit of calling `Dispose()` even if an unhandled exception is thrown in the code within the block.

Problem

It has been my understanding that the `using` statement in .NET calls an `IDisposable` object's `Dispose()` method once the code exits the block. Does the `using` statement do anything else? If not, it would seem that the following two code samples achieve the exact same thing: ``` Using Con as New Connection() Con.Open() 'do whatever ' End Using Dim Con as New Connection() Con.Open() 'do whatever ' Con.Dispose() ``` I will give the best answer to whoever confirms that I am correct or points out that I am wrong and explains why. Keep in mind that I am aware that certain classes can do different things in their `Dispose()` methods. This question is about whether or not the `using` statement achieves the exact same result as calling an object's `Dispose()` method.

Original source