usingsystem;
//處理非託管資源
//例如:檔案控制代碼、網路連線、資料庫連線
//實現idisposable不意味著也應該實現乙個終結器,終結器會帶來額外開銷
//發布本機資源,要釋放本機資源就需要終結器
//如果實現了終結器,也應該實現idisposabel介面
//這樣本機資源可以早些釋放
namespace
}//2.實現system.idisposable
class
myclass1 : idisposable
}//3.雙重實現
class
myclass2 : idisposable
protected
virtual
void dispose(bool
disposing)
//...
//清理非託管
} _isdisposed = true
; }
~myclass2()//
只清理非託管
}class
program
finally
//如果這些大括號過多很容易混淆
//也可以使用using來完成此工作,在變數超出作用域會自動呼叫dispose()
using (var ins = new
myclass1())}}
}
C 託管資源和非託管資源
託管資源指的是.net可以自動進行 的資源,主要是指託管堆上分配的記憶體資源。託管資源的 工作是不需要人工干預的,有.net執行庫在合適呼叫垃圾 器進行 非託管資源指的是.net不知道如何 的資源,最常見的一類非託管資源是包裝作業系統資源的物件,例如檔案,視窗,網路連線,資料庫連線,畫刷,圖示等。這...
C 託管資源與非託管資源
在.net 程式設計環境中,系統的資源分為託管資源和非託管資源。託管資源 net平台中,clr為程式設計師提供了一種很好的記憶體管理機制,使得程式設計師在編寫 時不要顯式的去釋放自己使用的記憶體資源 這些在先前c和c 中是需要程式設計師自己去顯式的釋放的 這種管理機制稱為gc garbage col...
C 託管資源 與 非託管資源
託管資源一般是指被clr控制的記憶體資源,這些資源的管理可以由clr來控制,net可以自動進行 主要是指託管堆上分配的記憶體資源。例如程式中分配的物件,作用域內的變數等 非託管資源 不受clr控制和管理的資源,比如檔案流,資料庫的連線,網路連線,系統的視窗控制代碼,印表機資源等,可以認為作業系統資源...