在自己的使用块中处理对象不是多余的吗?

Pai*_*mes 1 c#

在对现有类进行编程时,我注意到有人写过这样的东西:

using(DisposableObject disp = new DisposableObject())
{
    ...
    ...

    disp.Dispose()
}
Run Code Online (Sandbox Code Playgroud)

然后我想知道:是不是使用块足以处理一个对象?可能有任何方式Dispose()在这种情况下有用吗?

因为它对我没有任何意义......

Nik*_*wal 5

在你的情况下,它dispose在内部使用using是无用的,因为当using语句的范围结束时它会自动调用dispose.这就是为什么你只能编写IDisposableusing括号内实现接口的对象.

using(.......)
Run Code Online (Sandbox Code Playgroud)

此外,它有任何声明使用disp对象后disp.Dispose()它会给出错误,因为那时对象将被处置,即它的内存已被释放.

但要注意

如果disposeusing范围结束之前是最后一行,则它是无用的.

但是当后面有更多的线路时,它并没有用dispose.