最後確定() -
此功能將清理在垃圾收集過程中的非託管資源只有 - 當實際執行該方法
用戶不知道。
此外,用戶不能直接調用此函數來清理內存。垃圾回收概念
Dispose() -
通過實現IDisposable接口,用戶可以清理UnManaged資源,用戶可以清楚地知道何時資源被釋放。
我的理解是Finalize()不能被覆蓋來清理非託管資源。
這是一個僅用於'GC'進程將用於清理非託管資源的系統進程。
如果用戶需要自行清理資源,那麼他/她應該實現IDisposable接口並顯式調用Dispose()。沒有其他的可能!
清理非託管資源的最佳做法是使用'USING'語句。
問題1: 我的理解是否正確?如果我錯了,請在上面的陳述中糾正我。
問題2: 另外,我想知道,我可以清理管理資源通過實現IDisposable接口,並通過調用Dispose()?
http://stackoverflow.com/questions/732864/finalize-vs-dispose –
最後這兩種方法釋放非託管資源。有什麼區別的Finalize()和Dispose() – Simbu
Dispose( )是釋放非託管資源的唯一方法,並且在殺死對象時應該顯式調用它。 Finalize()是由CLR調用的,當它調用Dispose()時,依靠Finalize()(因此不會自己調用Dispose())意味着您完全無法控制何時釋放非託管資源。這可能意味着您不必要地打開數據庫連接等。因此:當您擁有非託管資源時,同時實現IDisposable和Finalize(),並確保您的調用者調用Dispose()。 –