初讀CLR Via C# 之 IL、CTS、CLS

來源:互聯網
上載者:User

本章將對CLR中的IL、CTS和CLS進行一個大概的總結。下章將開始第二章的內容。

IL我們稱之為進階組合語言或者中繼語言,在我們編寫基於.NET架構下的程式(不論是C#、VB或者J#等)在被編譯成本地CPU指令前,都將被編譯成IL語言,再有CLR對IL語言進行編譯和控制。比如用VB在控制台應用程式寫入如下代碼:

    Sub Main()

        Console.WriteLine("VB")

 End Sub

再用C#在控制台應用程式寫入如下代碼:

static void Main(string[] args)

{

       Console.WriteLine("Test");

}

雖然文法完全不一樣(除了輸出比較相似外),但是如果我們用微軟的MSIL反組譯工具載入編譯完成後的exe檔案,

 

 

 

圖1.1

 

      圖1.2

 

上面兩張圖中圖1.1為編譯完成後VB語言的代碼,圖1.2為編譯完成後C#的代碼,在我畫紅線的地方大家可以看出,出了第一行(紅線)不一樣為我們輸出的字串外,第二行(紅線)是完全一樣,也就是說不管在平台下什麼語言進行編程,編譯器最終都會把它編譯成統一的IL代碼(相同功能,比如樣本中的控制台輸出指令)。通過上面的樣本可以很容易的看出CLR是如何支援多語言整合的,只是需要不同的編譯器,把源檔案編譯成面向CLR的IL代碼,就可以在.NET架構下面運行。

什麼是CTS?

CTS(Common Type System 一般型別系統)是由微軟制定的一個規範,它表述了一個類型的定義和行為。既然CTS是一組規範,那麼都規定了什麼呢?

一、CTS規定一個類型可以包含零個或多個成員(欄位、屬性、方法、事件);

二、CTS規定了一個類型的可視原則。就是我們所說的許可權修飾符(public、private、protected、internal)

三、CTS規定任何類型都只能從一個類型中派生,即:System.Object類型。(雖然C++支援多整合,但是在.NET架構下,如果編譯器發現開發人員使用了多整合,違反了CTS的這一規定,編譯器就會報錯。)

什麼是CLS?

  CLS(Common Language Specification Common Language Specification)是由微軟制定的一個各個語言間都支援的功能。也就是說,CLS是CTS的一個子集,而這個子集是.NET架構下面所有程式設計語言都必須遵守的(如果需要C#和VC++的應用程式進行通訊)。說的更詳細一點就是說,如果你想用C#調用C++的組件,那麼C++所使用的文法(如果該方法為public,如果方法不為public的話,CLS不進行約束),必須保證C#能夠操作。可是C++程式員不一定知道C#能不能操作他所寫的方法,這個時候就需要CLS進行約束,以保證C#能正常的調用C++的組件。

 

圖1.3

 

圖1.3中大家可以看出,CLR\CTS為.NET架構下的所有語言提供了一個大的功能集。每一個語言都使用了CLR\CTS的一個子集。但是這個子集中都包含了CLS這個最小的子集。也就是說所有語言的功能及都必須支援CLS最小的供能集。

     到此這本書的第一章筆者只領悟到這些東西,可能還有更深層次的東西,由於筆者的水平有限,也只能到這裡了。如有不對的地方、不準確的地方,希望各位看官都能即時的提出。以便筆者學習和糾正博文中的錯誤,謝謝!

   

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.