2015-02-23 85 views
-4

我确定这是一个简单的问题,但是在处理没有使用using语句的IDisposable对象时我该怎么办?在没有使用语句的情况下处理IDisposable对象

+4

yourObject.Dispose(); < - 只需在离开正在使用的方法之前补充一下。 – Falgantil 2015-02-23 13:23:23

+2

可能是因为这是一个通过阅读第一个结果来回答的问题,当Google搜索'c#使用' – Falgantil 2015-02-23 13:25:49

+0

_我应该在什么时候做... ... - 添加一个'using(){}'语句?问题不是很清楚或完整。请详细说明什么和为什么。 – 2015-02-23 13:26:24

回答

3

所有的using构造确实需要拨打Dispose()其中IDisposable要求您执行。

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

using (IDisposable something = new SomeDisposableClass()) { 
    ... 
} 

务必:

IDisposable something = new SomeDisposableClass(); 

try { 
    ... 
} finally {  
    if (something != null) 
     something.Dispose(); 
} 

注意使用try..finally的,这将确保Dispose()被调用,即使有一个例外。

+2

你的第二个样本不是异常安全的。 – 2015-02-23 13:28:11

+0

@HenkHolterman好点我更新了示例。 – Lloyd 2015-02-23 13:31:51

相关问题