覆寫 Finalize 方法
Finalize 方法是在萬一沒有呼叫 Dispose 方法時,做為一種清除資源的防護措施。您只應該實作 Finalize 方法來清除 Unmanaged 資源。不應該對 Managed 物件實作 Finalize 方法,因為記憶體回收行程會自動清除 Managed 資源。根據預設,Object.Finalize 方法並不會執行任何動作。如果您希望記憶體回收行程在回收物件的記憶體前先在物件上執行清除作業,您必須在類別中覆寫這個方法。
注意事項 |
---|
您無法在 C# 或 C++ 程式語言中覆寫 Finalize 方法。在 C# 中,請使用解構函式語法實作 Finalize 方法。在 .NET Framework 2.0 版中,C++ 提供了自己的語法來實作 Finalize 方法,如Destructors and Finalizers in Visual C++所述。在之前的版本中,C++ 和 C# 一樣,都使用解構函式語法來實作 Finalize 方法。 |
Object.Finalize 方法的範圍是受到保護的 (Protected)。當您覆寫類別中的方法時,您應該維持這個限制範圍。讓 Finalize 方法保持為受保護,可以防止應用程式的使用者直接呼叫物件的 Finalize 方法。
物件的 Finalize 方法應該釋放物件所持有的所有資源。它也應該呼叫該物件之基底類別的 Finalize 方法。物件的 Finalize 方法不應呼叫其基底類別以外任何物件上的方法。這是因為被呼叫的其他物件可能會與呼叫物件同時進行回收,例如在 Common Language Runtime 關閉的時候。
如果您允許任何例外狀況逸出 Finalize 方法,系統會假設已傳回該方法,並且繼續呼叫其他物件的 Finalize 方法。
請參閱
參考
概念
實作 Dispose 方法
C# 及 C++ 中的解構函式語法