It is the same: the object will be disposed in both way.
the using
statement is translated by the compiler as a try block which calls Dispose
in a finally block.
finally
is guaranteed to execute after the try block has finished execution, regardless of its execution path.
Dispose is guaranteed to be called, no matter what.
Reference MSDN
As a style and best practice IMHO it is better to dispose an object as soon as it is not needed anymore because you will free resources earlier and because if Dispose throw an exception you will have your method return anything. and it will be easier to debug.
Update
As KrisVandermotten pointed out there are some cases where the finally block will not execute.
- Environment.FailFast
- the Uncatchable execeptions
- Power Failure