Dot-Net

.net 中的 finalize 和 dispose 有什麼區別?

  • September 5, 2010

可能的重複:

完成與處置

你好,

最近,我在接受有關 finalize 和 dispose 的採訪時被問到。何時使用它們中的每一個以及垃圾收集器與它們的關係如何。請分享連結以啟發更多關於該主題的資訊。

歡迎分享…

提前致謝。

在回收符合收集條件的對象之前,垃圾收集器會執行終結器。Dispose()用於清理非託管資源,如網路連接、文件、作業系統內容的句柄等。using它與編譯器確保在完成對像後立即呼叫的塊結合使用效果最佳Dispose()- 並且還確保一旦對像被釋放,您就不能再使用該對象。

請注意,終結器不必執行因此依賴它可能很危險:

**這對您意味著什麼:**您的程序不能依賴終結器來保持整潔。終結器是一個安全網,而不是資源回收的主要手段。當你完成一個資源時,你需要通過呼叫CloseDisconnect對像上可用的任何清理方法來釋放它。(IDisposable介面編碼了這個約定。)

還要注意對象符合收集條件的準確時間。閱讀上面連結的文章——它既不是范圍(一個與對象的生命週期有關的奇怪詞——它是“合法引用的程序文本區域以其不合格的名稱。” ) 也不是嚴格的引用計數,因為即使在對它的最後一個引用消失之前,對像也可以被收集。

引用自:https://stackoverflow.com/questions/3645521