2.2.4、公用語言規范(CLS)
公用語言規范(Common Language Specification,CLS),是CLR定義的語言特性集合,主要用來解決互操作的問題。如果一個類遵守CLS,那麼同樣遵守CLS規范的其它編程語言將能夠使用它的外部可見項。
使被不同語言的編譯器所編譯的對象能夠相互理解的唯一方法,是所有在互操作過程中涉及的數據類型和語言特性對所有的語言來說是公共的。為了這個目的,公用運行時環境標識了一組語言特征的集合,稱為公用語言規范(CLS)。如果你的組件在應用程序接口(Application Program Interface)中僅使用CLS的特征語言(包括子類),那麼該組件能夠被任何支持CLS的語言所編譯的組件所訪問。所有支持CLS並僅使用CLS中的語言特征的組件被稱為符合CLS的組件。
設計公用語言規范時遇到的一個最主要的挑戰是選擇適當的語言特性子集的大小。它應具有完全的表達能力,又應足夠小,使得所有的語言能夠容納它。由於CLS是關於語言互用性的規范,它的規則僅應用於外部可見的條目中。CLS假設語言間的互操作性僅在語言集合的邊界發生交叉時才是最重要的。也就是說,在單一的語言集中對於編程技術的使用沒有任何限制。CLS的規則僅作用於在定義它們的語言集合之外仍然可見的項上。這樣就大大縮小了CLS的范圍,減輕了系統的負擔。
在CLS中是用System.CLSCompliantAttribute類來標識一個集合或者類是否是符合CLS規范的:在System.CLSCompliantAttribute的構造器中有一個Boolean型的返回值,代表了與之相關聯的項是否符合CLS規范。