C# 解構函數 ~ClassName() 編譯為 protected override void Finalize()。GC 回收前會呼叫 Finalize 釋放非託管資源,但會導致效能下降。
Finalize 的物件會被放入「終結佇列」Finalize,之後需下一次 GC 才真正回收記憶體public void Dispose() {
ReleaseMyResource(); // 釋放非託管資源
base.Dispose(); // 釋放基類資源
GC.SuppressFinalize(this); // 告知 GC 無需呼叫 Finalize
}