前言:
一次偶然的機(jī)會 在園子里看到@Learning hard 出版的一本書: <<C#學(xué)習(xí)筆記>>, 然后買來 一直到現(xiàn)在讀完, 感覺很不錯, 適合入門, 書中內(nèi)容是從C#1.0 到5.0. 很全面也很細(xì)致.
下面就來分享一下這本書中自己感覺需要記錄的一些東西.
這里先貼上@Learning hard本人在博客園的主頁: http://www.companysz.com/zhili/
以及本書中的一些知識點(diǎn): http://www.companysz.com/zhili/category/421637.html
一: .Net Framework
1.1.Net Framework 就是應(yīng)用程序運(yùn)行時的執(zhí)行環(huán)境, 為應(yīng)用程序的執(zhí)行提供一下幾種服務(wù):
>全面的類庫
>內(nèi)存管理
>通用類型系統(tǒng)
>開發(fā)結(jié)構(gòu)和技術(shù)
>語言互操作性
1.2 .Net Framwork的組成
1.公共語言運(yùn)行時
公共語言運(yùn)行時是.Net Framwork的核心基礎(chǔ). 我們可以將CLR看成一個在執(zhí)行時管理代碼的代理, 它提供了內(nèi)存管理, 線程管理和異常處理的服務(wù), 而且還負(fù)責(zé)對代碼實施嚴(yán)格的類型安全檢查, 保證了代碼的正確性. 我們將受CLR管理的代碼稱為托管代碼(managed code), 將不受CLR管理的代碼稱為非托管代碼(unmanaged code).
CLR包含兩個組成部分: 通用類型系統(tǒng)(Common Type System, CTS)和公共語言規(guī)范(Common Language Specification, CLS).
1.3 .Net Framwork 類庫就是一組DLL程序集的集合.
1.4 C# 代碼的執(zhí)行過程
>C#代碼編譯為中間語言代碼的階段
在編譯C#代碼時, C#的編譯器(VS中集成了C#編譯器)把代碼譯為通用中間語言(Common Intermediate Language, CIL)代碼
>中間語言代碼編譯為本季代碼的階段
要使C#代碼能夠運(yùn)行, 還需進(jìn)一步將CIL代碼轉(zhuǎn)換為特定CPU的機(jī)器碼, 該過程由即時編譯器(Just-In-Time, JIT)來完成.
●并不是只有C#代碼才能夠被編譯為中間語言代碼, 其他面向.Net的語言在執(zhí)行之前也都需要先編譯為中間語言代碼. 該過程由編譯器來完成.
●JIT編譯生成本機(jī)代碼之后, 編譯好的代碼會被放置到一個緩沖區(qū)緩存, 下次再調(diào)用相同的代碼時, 可直接運(yùn)行緩存區(qū)中現(xiàn)有的本機(jī)代碼, 從而避免重新驗證IL代碼以及把它編譯成本機(jī)代碼的過程. 使用這種方法, 系統(tǒng)只在首次調(diào)用時才會造成一些性能損失(即發(fā)生JIT過程).
C#代碼編譯為中間語言代碼階段:
中間語言代碼編譯為本機(jī)代碼階段
PS: 今天本來想寫更多內(nèi)容的, 但是時間已經(jīng)不早了. 這里還欠缺幾張圖片, 明天再來補(bǔ)上, 有時間的話會分享一下在工作中學(xué)習(xí)的東西: 比如遠(yuǎn)程Debug, sql PRofiler等.
|
新聞熱點(diǎn)
疑難解答