国产探花免费观看_亚洲丰满少妇自慰呻吟_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(六)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浪卡子县| 洪泽县| 腾冲县| 丹江口市| 蒙阴县| 丽水市| 安阳县| 阳西县| 津南区| 吴江市| 湛江市| 抚州市| 金平| 纳雍县| 台东市| 香河县| 宁波市| 富裕县| 武城县| 同仁县| 凯里市| 巴彦淖尔市| 唐山市| 化州市| 阿拉善右旗| 天镇县| 屏南县| 万盛区| 临漳县| 博兴县| 秀山| 苏尼特右旗| 岳西县| 土默特左旗| 罗甸县| 会同县| 讷河市| 洪泽县| 常山县| 奉新县| 阜南县|