2010-07-28 46 views
0

我想使用IDisposable接口來清除內存中未使用的任何資源。如何使用IDisposable處置對象

public class dispose:IDisposable 
{ 
     public void Dispose() 
     { 

      throw new NotImplementedException(); 
     } 

     public void fun() 
     { 
      PizzaFactory _pz = new PizzaFactory(); // 
     } 
    } 

我想處置pz對象,當沒有裁判它的存在。請讓我知道如何去做。

回答

10

這就是垃圾收集器的用途。如果你擔心的是回收內存,讓垃圾收集器爲你做。 IDisposable是關於回收非託管資源(網絡連接,文件句柄等)。如果PizzaFactory有任何這些,那麼應該實現IDisposable - 你應該明確地管理它的處置。 (您可以添加一個終結在某些時候運行後有到它沒有更多的活動引用,但它的不確定性。)

5

這聽起來垃圾收集,不IDisposable

如果_pz是一次性的,需要時dispose實例配置(通常通過using)被設置,你可以有:

public void Dispose() 
    { 
     if(_pz != null) _pz.Dispose(); 
     _pz = null; 
    } 

可以做終結有關的東西,但不是這是一個好主意。

3
public void Dispose() 
{ 
    _pz.Dispose(); 
} 

如果PizzaFactory不是IDisposable,那麼您不需要任何東西。有垃圾收集器。

0

vaibhav - 你不會實現IDisposable接口,以便使用使用構造?這樣一來,它得到的設置自動..

吉姆

相關問題