不使用 using 语句处理 IDisposable 对象

Pha*_*e01 -1 c# idisposable using-statement

IDisposable我确信这是一个简单的问题,但是在没有 using 语句的情况下处理对象时我应该做什么?

Llo*_*oyd 5

using构造所做的只是调用您执行的Dispose()命令IDisposable

所以你可以自己调用它,而不是:

using (IDisposable something = new SomeDisposableClass()) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

做:

IDisposable something = new SomeDisposableClass();

try {
   ...
} finally {    
   something?.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

请注意,即使出现异常,try..finally也会确保调用该函数。Dispose()

  • 您的第二个示例不是异常安全的。 (2认同)