討論「模式化」實現和使用IDisposable/Dispose的問題很多,但它具有的優點是擁有C#中的所有清理代碼finilizer ?在C#類終結器中使用IDisposable執行動作的好處
當然其他類可以顯式調用Dispose,而不是類實例被垃圾收集並調用finilizer。它是唯一的嗎?
討論「模式化」實現和使用IDisposable/Dispose的問題很多,但它具有的優點是擁有C#中的所有清理代碼finilizer ?在C#類終結器中使用IDisposable執行動作的好處
當然其他類可以顯式調用Dispose,而不是類實例被垃圾收集並調用finilizer。它是唯一的嗎?
對於何時甚至是否會調用Finalizer(析構函數),您沒有任何保證。
所以爲了及時清理資源(文件,Db連接),Dispose模式是必不可少的。
該IDisposable是爲了避免析構。析構函數的問題是你永遠不知道它們何時被調用,而具有析構函數的對象總是最後被清理的。
使用IDisposable你告訴你的課程的用戶,他們應該使用使用方法。 如:
using(MyClass myClass = new MyClass())
{
// Do something with MyClass.
}
不避_having_析構函數。它避免了實際使用(依賴)它們。 – 2012-03-25 21:18:29
http://www.devx.com/dotnet/Article/33167/1954 – 2012-03-25 20:29:56
@TimSchmelter應該是一個答案 – SimpleVar 2012-03-25 20:33:38