Dot-Net
.net 中的 finalize 和 dispose 有什麼區別?
可能的重複:
你好,
最近,我在接受有關 finalize 和 dispose 的採訪時被問到。何時使用它們中的每一個以及垃圾收集器與它們的關係如何。請分享連結以啟發更多關於該主題的資訊。
歡迎分享…
提前致謝。
在回收符合收集條件的對象之前,垃圾收集器會執行終結器。
Dispose()用於清理非託管資源,如網路連接、文件、作業系統內容的句柄等。using它與編譯器確保在完成對像後立即呼叫的塊結合使用效果最佳Dispose()- 並且還確保一旦對像被釋放,您就不能再使用該對象。請注意,終結器不必執行,因此依賴它可能很危險:
**這對您意味著什麼:**您的程序不能依賴終結器來保持整潔。終結器是一個安全網,而不是資源回收的主要手段。當你完成一個資源時,你需要通過呼叫
Close或Disconnect對像上可用的任何清理方法來釋放它。(IDisposable介面編碼了這個約定。)還要注意對象符合收集條件的準確時間。閱讀上面連結的文章——它既不是范圍(一個與對象的生命週期有關的奇怪詞——它是“合法引用的程序文本區域以其不合格的名稱。” ) 也不是嚴格的引用計數,因為即使在對它的最後一個引用消失之前,對像也可以被收集。