1、.NET編譯ide
1.C#和.net的關係
C#是一種語言,儘管它是用於生存面向.net環境的代碼,但它自己不是.net的一部分.net支持的一些特性,C#並不支持。而C#語言支持的另外一些特性,.net並支持(例如運算符重載)
2..net編譯階段
(1)把源代碼編譯成Microsoft中間語言(IL)
(2)CLR把IL編譯成平臺專用的代碼。
Microsoft中間語言試用數字代碼,能夠很是快速地轉換爲內部機器碼。
優勢:平臺無關性,提升性能和語言的互操做性。
3.JIT編譯
JIT編譯並非把整個應用程序一次編譯,而是隻編譯它調用的那部分代碼。
代碼編譯一次後,獲得的內部可執行代碼就存儲起來,知道退出應用程序爲止,
這樣下次運行這部分代碼時,就不須要從新編譯了。
2、中間語言的特定
1.面向對象和接口的支持
(1) 用一種語言編寫的類應能繼承用另一種語言編寫的類。
(2) 一個類應能包含另外一個類的實例,而無論它們是使用什麼語言編寫的。
(3) 對象或者對象的引用應能在方法之間傳遞。
(4) 在不一樣的語言之間調用方法時,應能在調試器中調試這些方法調用,
即調試不一樣語言編寫的源代碼。
2.相異值類型和引用類型
值類型: 變量直接保存其數據
引用類型:變量僅保存其存地址,對應的數據能夠在該地址中找到。
通用類型定義一個內容豐富的類型層次結構,以下:
通用類型系統(CTS):保證不一樣語言直接數據類型的統一。
公共語言:(CLS) :和通用類型系統一塊兒確保語言的互操做性。
3、.net編譯工做原理圖