看面試題的時候遇到這樣一道題目,簡要說明.NET的編譯過程,在網上看了很多資料,簡單總結如下:
1、一般的編譯過程
通常高級語言的程序編譯過程是:首先寫好的程序是源代碼,然后編譯器編譯為本地機器語言,最后在本地操作系統運行。
2、.NET程序的編譯與之類似:首先編寫好的源代碼,然后編譯為微軟中間語言代碼,運行的時候即時編譯為本地機器語言,同時.NET代碼運行時有一個CLR(運行時)環境來管理程序;
總結:
一般的高級程序語言會直接將代碼編譯成知為機器語言(二進制語言),之后由本地機執行這些機器語言從而實現編譯過程;
而.NET的編譯機制會在中間多一個環節,就是先將高級語言(如C#、VB)編譯成中間語言(IL),然后再將中間語言(IL)通過CLR(公共語言運行時)轉換為機器語言,之后由本地機執行這些機器語言從而實現編譯過程;
最終的二進制代碼(機器語言)被存儲在一個緩沖區中。所以一旦程序使用了相同的代碼,那么將會調用緩沖區中的版本。這樣的話,如果一個.Net程序第二次被運行,那么就不需要進行第二次編譯,速度明顯加快。