C#語法學習-託管代碼和非託管代碼的理解

c#的託管代碼和非託管代碼的理解

理解託管和非託管代碼的前提之下,要先了解CLR(公共語言運行庫)

.Net Framework 是由彼此獨立又相關的兩部分組成:CLR 和 類庫, CLR是它爲我們提供的服務,類庫是它實現的功能.
.NET的大部分特性----垃圾收集,版本控制,線程管理等,都使用了CLR提供的服務

當你爲.NET Framework編譯源代碼的時候,得到的目標代碼不是CPU能識別的機器指令,而是一種叫做"微軟中間語言(MSIL,或簡稱爲IL的代碼)"的新語言.CLR提供了一個實時編譯器,用來把IL代碼編譯爲本機機器代碼.這樣一來,CLR能夠使代碼變得可移植,因爲.NET應用程序的源代碼必須被編譯爲IL代碼,這些IL代碼可以運行在任何提供CLR服務的平臺上.從CLR的角度來看,所有的語言都是平等的,只要有一個能生成IL代碼的編譯器就行,這就確保了各種語言的互操性.

managed code-託管代碼

由公共語言運行庫(CLR)環境(而不是直接由操作系統)執行的代碼。託管代碼應用程序可以獲得公共語言運行庫服務,例如自動垃圾回收、運行庫類型檢查和安全支持等。
這些服務幫助提供獨立於平臺和語言的、統一的託管代碼應用程序行爲

Unmanaged Code - 非託管代碼

在公共語言運行庫環境的外部,由操作系統直接執行的代碼。非託管代碼必須提供自己的垃圾回收、類型檢查、安全支持等服務;它與託管代碼不同,後者從公共語言運行庫中獲得這些服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章