国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

初探C#

2019-11-14 13:48:22
字體:
來源:轉載
供稿:網友

                                                                  初探.NET底層原理

      學習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執行。

那么下面我們來看一下.NET中包含哪些內容?

 

該圖為.NET平臺機構圖,可以發現VS.NET框架的核心技術為公共語言運行時(CLR)而且還包含BCL(基礎類庫)以及.NET中的各種語言,為何會有這么多種語言可以在.net平臺中運行呢?其實,以上的各種語言都可以編寫面向CLR的程序代碼,這種代碼在.net中被稱為托管代碼,所有的托管代碼都可以在CLR上運行,具有平臺無關性。為何.net不能實現跨平臺呢?例如在linux中為何不可以實現asp.net或者winform呢,其實就是因為沒有面向Linux開發的CLR(不過mono貌似已經實現了,由于本人并未使用過,所以就不予置講了),就是這樣的原因,.net未能實現跨平臺。

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

 Base Class LIbrary Support:基礎類庫支持

 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方法。

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


上一篇:SQLLinqlamda區別

下一篇:AutoMapper(六)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 方正县| 仙桃市| 红桥区| 龙海市| 重庆市| 福建省| 贵溪市| 隆化县| 额敏县| 沂源县| 天峨县| 于田县| 沂南县| 南阳市| 濮阳县| 丰县| 杂多县| 兴国县| 洛隆县| 荣成市| 陆良县| 大港区| 信阳市| 屏山县| 积石山| 马公市| 尼勒克县| 崇州市| 柘城县| 苏州市| 营口市| 道孚县| 同仁县| 年辖:市辖区| 石台县| 尚义县| 布尔津县| 绥滨县| 孟州市| 明光市| 明水县|