Interesting C# Note

As it turns out, if you have a situation like this:

using (IDisposable foo = new foo())
{
throw new Exception();
}

foo.Dispose() will be called. This is because the call to Dispose() is actually implemented within a finally block when the code is compiled.