您无需检查的IDisposable对象null。using不会引发异常,Dispose()也不会被调用:
DisposableObject TryOpenFile()
{
return null;
}
// 一次性此处为null,但这不会引发异常
using (var disposable = TryOpenFile())
{
// 这将引发NullReferenceException,因为一次性值为null
disposable.DoSomething();
if(disposable != null)
{
// 在这里我们很安全,因为一次性物品已经过检查为空
disposable.DoSomething();
}
}