今天覆習了一下C#基礎知識,剛好看到了析構函數這裏,有了進一步瞭解,記錄一下,與君共勉
~類名() { //一些要釋放的代碼 }
“~”做前綴,加類名就構成了析構函數。
我們不能自己調用析構函數,它是在.NET垃圾收集過程中調用的。我簡單測試了一些,在WinForm中簡單調用類,當窗口關閉時,會調用這個類的析構函數。
我用想用到析構函數,是因爲在處理過程中,要根據實際情況,在不同時期釋放和建立新的對象。
按照MSDN上的話,如果你的代碼中包含需要及時清理的非託管資源,別把它留給析構函數處理,因爲不能保證析構函數會很快運行(.NET垃圾收集我們應該控制不了吧)。我們可以把資源的清理代碼封裝在一個VOID類型的無參數方法中,一般叫做Dispose。
例如我寫的一個基類:
public class CSMOBasic { private bool disposed = false; public CSMOBasic() { #region 構造代碼 #endregion } #region 析構函數,和清理函數 /// <summary> /// 析構函數 /// </summary> ~CSMOBasic() { // Dispose(false); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposed == false) { if (disposing == true) { // //釋放非託管資源的代碼 } // //釋放託管資源的代碼 } disposed = true; } #endregion }