c# - 是否会在带有空对象的 using 语句中调用 Dispose()?

标签 c# idisposable using

在(潜在的)空对象上使用 using 语句是否安全?
考虑以下示例:

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

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

是否保证仅当对象不为 null 时才会调用 Dispose,并且我不会得到 NullReferenceException

最佳答案

是的,Dispose() 仅在非空对象上调用:

http://msdn.microsoft.com/en-us/library/yh598w02.aspx

关于c# - 是否会在带有空对象的 using 语句中调用 Dispose()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2522822/

相关文章:

c# - 在 C# 中获取主音量

c# - 同步 HTTP 处理程序和异步 HTTP 处理程序之间的性能差异

c# - 是否将用户设置存储在 ASP.NET Core Identity AspNetUsers 表中

c# - 我在这里制造泄漏吗?

c# - 为什么 Enumerable.Range 实现 IDisposable?

datatable - 我应该 Dispose() DataSet 和 DataTable 吗?

c# - 是否可以创建一个实例并转换回通用接口(interface)类型?

c# - 会为匿名变量调用 dispose 吗?

c# - Using with inner using 的正确使用方法

c++ - 在 C++ 中声明 using 的位置是否有好的做法?