Is it safe to use the using
statement on a (potentially) null object?
Consider the following example:
class Test {
IDisposable GetObject
The expansion for using
checks that the object is not null
before calling Dispose
on it, so yes, it's safe.
In your case you would get something like:
IDisposable x = GetObject("invalid name");
try
{
// etc...
}
finally
{
if(x != null)
{
x.Dispose();
}
}
Yes, before Disposing the reference will be null-checked. You can examine yourself by viewing your code in Reflector.
You should be ok with it:
using ((IDisposable)null) { }
No exception thrown here.
Side note: don't mistake this with foreach
and IEnumerable
where an exception will be thrown.
Yes, Dispose()
is only called on non-null objects:
http://msdn.microsoft.com/en-us/library/yh598w02.aspx
You will not get null reference exception as per my experience. It will be simply ignored.