2012-03-25 56 views
2

討論「模式化」實現和使用IDisposable/Dispose的問題很多,但它具有的優點是擁有C#中的所有清理代碼finilizer ?在C#類終結器中使用IDisposable執行動作的好處

當然其他類可以顯式調用Dispose,而不是類實例被垃圾收集並調用finilizer。它是唯一的嗎?

+1

http://www.devx.com/dotnet/Article/33167/1954 – 2012-03-25 20:29:56

+0

@TimSchmelter應該是一個答案 – SimpleVar 2012-03-25 20:33:38

回答

5

對於何時甚至是否會調用Finalizer(析構函數),您沒有任何保證。

所以爲了及時清理資源(文件,Db連接),Dispose模式是必不可少的。

1

該IDisposable是爲了避免析構。析構函數的問題是你永遠不知道它們何時被調用,而具有析構函數的對象總是最後被清理的。

使用IDisposable你告訴你的課程的用戶,他們應該使用使用方法。 如:

using(MyClass myClass = new MyClass()) 
{ 
    // Do something with MyClass. 
} 
+0

不避_having_析構函數。它避免了實際使用(依賴)它們。 – 2012-03-25 21:18:29

相關問題