对空对象使用语句?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

在空对象上使用using语句是否安全? 例子:

class Test {
    IDisposable GetObject(string name) {
        // returns null if not found
    }

    void DoSomething() {
        using (IDisposable x = GetObject("invalid name")) {
            if (x != null) {
                 // etc...
            }
        }
    }
}

是否保证只有在对象不为空时才会调用Dispose,并且我不会得到NullReferenceException?

提问于
用户回答回答于

使用扩展在调用Dispose之前检查对象是否为空,所以是的,它是安全的。

在你的情况下,你会得到像这样的东西:

IDisposable x = GetObject("invalid name");
try
{
    // etc...
}
finally
{
    if(x != null)
    {
        x.Dispose();
    }
}

扫码关注云+社区