什麼是託管代碼html
在「過去」(只是幾年前),使用C和C++編寫代碼的開發人員不得不本身進行內存管理。當再也不須要已分配的內存空間時,必須將其釋放,除非但願該內存被「泄漏」,內存泄漏將帶來嚴重的性能問題。更糟糕的是由於直接處理指針,而它很容易破壞項目正在使用的內存。在不少狀況下,這將致使很長時間的故障調試,由於一般實際看到出錯的地方並非內存初始被破壞的地方。安全
人們認爲C和C++語言難於掌握,主要是由於具備不少這種類型的問題。許多開發人員不肯意嘗試C和C++,也是由於這個緣由,他們嘗試使用其餘沒有這些使人頭痛問題的高級語言,例如Visual Basic。儘管這些新語言具備易用易學的優勢,但也具備一些缺點。它們的性能沒法與C和C++語言相比,在大多數狀況下顯得特別慢。另外,由於底層操做系統是使用C++開發的,因此這些語言難以實現C++的全部功能。儘管可使用它們處理不少很是好的工做,可是若是想要得到操做系統的全部性能和優點,只能依靠本身。post
與.NET運行庫的第一個版本相比,.NET的大多數內容都已經改變了。Microsoft公司幾乎徹底從新設計了一種新的API,竭力確保開發人員關心的問題都會被解決。這種新的運行庫必須易學易用,快速高效,而且不存在使人頭痛的內存管理問題。在本書中,將看到.NET在這些方面的好處。性能
託管代碼 (managed code)google
1. 由公共語言運行庫環境(而不是直接由操做系統)執行的代碼。託管代碼應用程序能夠得到公共語言運行庫服務,例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務幫助提供獨立於平臺和語言的、統一的託管代碼應用程序行爲。編碼
如C#url
2.是可使用20多種支持Microsoft .NET Framework的高級語言編寫的代碼,它們包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, 以及C++。全部的語言共享統一的類庫集合,並能被編碼成爲中間語言(IL)。IL代碼再被即時編譯器(JIT)轉化爲本地CPU指令操作系統
非託管代碼 (unmanaged code) 在公共語言運行庫環境的外部,由操做系統直接執行的代碼。非託管代碼必須提供本身的垃圾回收、類型檢查、安全支持等服務;它與託管代碼不一樣,後者從公共語言運行庫中得到這些服務。如C++,C設計