我想使用IDisposable接口清除内存中没有使用的任何资源。
public class dispose:IDisposable
{
public void Dispose()
{
throw new NotImplementedException();
}
public void fun()
{
PizzaFactory _pz = new PizzaFactory(); //
}
}
我想处理pz
对象,当没有引用存在时。请让我知道怎么做。
答案 0 :(得分:10)
这就是垃圾收集器的用途。如果您只是担心回收内存,请让垃圾收集器为您完成。 IDisposable
是关于回收非托管资源(网络连接,文件句柄等)。如果PizzaFactory
包含其中任何内容,那么 it 应该实现IDisposable
- 您应该明确管理其处置。 (你可以添加一个终结器来在某些时候运行 之后没有更多的实时引用,但它是不确定的。)
答案 1 :(得分:5)
这听起来更像是垃圾收集,而不是IDisposable
。
如果_pz
是一次性的,并且需要在处置dispose
实例时处理(通常通过using
),您可以:
public void Dispose()
{
if(_pz != null) _pz.Dispose();
_pz = null;
}
你可以做与终结者相关的事情,但这不是一个好主意。
答案 2 :(得分:3)
public void Dispose()
{
_pz.Dispose();
}
如果PizzaFactory不是IDisposable,你不需要任何东西。有垃圾收集器。
答案 3 :(得分:0)
vaibhav - 你不是要实现IDisposable接口才能使用使用构造吗?就这样,它会被自动处理..
吉姆
答案 4 :(得分:0)