初探C#

                                                                  初探.NET底層原理html

      學習C#離不開.net平臺,由於微軟的開發平臺真的是太強大了,它爲每個開發者都作了太多太多,可是咱們不只要知道怎麼用,並且也應該知道其中的內部到底包含了什麼。本篇文章不只講一些C#語言的知識,也包括.net平臺中的一些運行的機理。數組

      相比Java因爲微軟對C#語言的封裝,讓許多人在其學習的較長時間內不能深入理解。舉個簡單的例子:咱們知道C#語言關於字段的封裝:在C#語言的實現中是get和set屬性,而在Java中確是get和set方法讓人一目瞭然,其實C#也是利用get,set方法實現的,只不過封裝起來,你們看不到而已。安全

      下面咱們將從頭講起C#語言中的底層原理:多線程

      首先咱們要知道任何語言的運行,歸根究竟是機器語言的運行,也就是大量的01數字。而C#語言也正是依靠.net平臺,將這種高級語言編譯成01代碼。那麼C#語言在.net平臺中的編譯過程究竟是怎樣的呢?框架

 


其實.NET平臺至關於Java中的虛擬機,經過C#編譯器獲得中間語言(一種特殊的字節碼),運行時再經由CLR中的JIT(just in Time)編輯器編譯爲機器代碼,便於OS執行。asp.net

那麼下面咱們來看一下.NET中包含哪些內容?編輯器

 

該圖爲.NET平臺機構圖,能夠發現VS.NET框架的核心技術爲公共語言運行時(CLR)並且還包含BCL(基礎類庫)以及.NET中的各類語言,爲什麼會有這麼多種語言能夠在.net平臺中運行呢?其實,以上的各類語言均可以編寫面向CLR的程序代碼,這種代碼在.net中被稱爲託管代碼,全部的託管代碼均可以在CLR上運行,具備平臺無關性。爲什麼.net不能實現跨平臺呢?例如在Linux中爲什麼不能夠實現asp.net或者winform呢,其實就是由於沒有面向Linux開發的CLR(不過mono貌似已經實現了,因爲本人並未使用過,因此就不予置講了),就是這樣的緣由,.net未能實現跨平臺。學習

      下面咱們來看CLR中的包含哪些內容?  spa

 Base Class LIbrary Support:基礎類庫支持.net

 Thread Support:CLR支持多線程(任何語言均可以利用此提供的服務來進行編寫多線程應用程序)。

COM Marshaler:向下兼容(詳細內容請看:https://msdn.microsoft.com/zh-cn/library/bb822049(v=vs.110).aspx)

Type Cheker:類型安全執行(任何不符合類型安全的強制轉換後,都會進行檢查,除此以外還自動檢查未初始化的變量與超過索引的數組)

Exception Manager:異常處理機制

IL to Native Compliers:是指利用CLR對MSIL進行編譯成機器代碼

GC:垃圾回收器並不能管理內存中全部的資源,開發人員仍然須要本身寫代碼實現回收,如使用close方法和dispose方法。

後續內容將逐步完善,請持續關注!

相關文章
相關標籤/搜索