在C#中处理对象销毁的最佳方法是什么?

fah*_*ash 3 c# garbage-collection idisposable

我有一个类库项目,它有一个在对象构造期间创建文件的类.完成对象后,必须删除该文件.我已经实现了IDisposable并在Dispose()中编写了删除代码.问题是,我仍然看到该文件.我记得在某处读过Dispose不能保证被调用.实现这一目标的最佳方法是什么?

Mik*_*hon 5

.NET中的最佳实践是使用using块.我希望你不能保证如果有人编写孤立的代码,你的代码将永远是GC的.然而

使用Statement

提供方便的语法,确保正确使用IDisposable对象.

通常,当您使用IDisposable对象时,您应该在using语句中声明并实例化它.using语句以正确的方式调用对象上的Dispose方法,并且(如前所示使用它时)一旦调用Dispose,它也会导致对象本身超出范围.在using块中,该对象是只读的,不能修改或重新分配.

using(YourDisposable iCanDispose = new YourDisposable())
{

  // work with iCanDispose
}
Run Code Online (Sandbox Code Playgroud)

确保在离开作用域后调用对象dispose方法.