語言互通性概觀

更新:2007 年 11 月

語言互通性是讓程式碼與使用不同程式語言所撰寫之程式碼互動的能力。語言互通性可以提高程式碼的重複使用率,進而改進開發程序的效益。

由於不同的開發人員會使用各種不同的工具和技術,每一種工具和技術也都可能支援不同的功能和型別,因此長久以來,要確保程式語言互通性一直是相當困難的工作。不過,以 Common Language Runtime 為目標的語言編譯器卻可以從執行階段的內建語言互通性支援取得不少優勢。

Common Language Runtime 藉由指定和強制執行一般型別系統,以及藉由提供中繼資料,對語言互通性提供了必要的基礎。因為所有以執行階段為目標的語言都必須遵循定義和使用型別的一般型別系統規則,所以這些型別的使用在各種語言中都是一致的。中繼資料是藉由定義儲存和擷取型別資訊的統一機制,來達成語言互通性。編譯器會將型別資訊儲存為中繼資料,而 Common Language Runtime 則會使用這些資訊在執行期間提供服務;執行階段可以管理多種程式語言應用程式的執行,因為所有型別資訊都是以相同方式儲存和擷取,而不論程式碼是以何種語言撰寫。

Managed 程式碼可以在以下各方面從執行階段的語言互通性支援取得優勢:

  • 型別可以從其他型別繼承實作、傳遞物件給其他型別的方法以及呼叫在其他型別上定義的方法,而不論這些型別是以何種語言實作。

  • 偵錯工具、分析工具 (Profiler) 或其他工具只需要認識一種環境 - Microsoft Intermediate Language (MSIL) 和 Common Language Runtime 的中繼資料 - 就可以支援以 Runtime 為目標的任何程式語言。

  • 所有程式語言的例外處理方法,都是一致的。您的程式碼可以用某一種語言擲回例外狀況,而以其他語言撰寫的物件也可以捕捉和了解這個例外狀況。

雖然執行階段對所有 Managed 程式碼提供了在 多種程式語言環境中執行的支援,但是並不保證其他開發人員使用的程式語言能夠充分運用您所建立型別的功能。這一點主要是由於每一種針對執行階段的語言編譯器,都是各自使用支援其本身獨特語言功能集的型別系統和中繼資料。如果您不知道呼叫的程式碼是以何種語言所撰寫,您就不太可能會知道您的元件所公開的功能是否能被呼叫端所存取。舉例來講,如果您選擇的語言可以支援不帶正負號的整數 (Unsigned Integer),您可以設計一個具有型別 UInt32 引數的方法;但是對於不具備「不帶正負號的整數」概念的語言來說,這個方法就無法使用。

為了確保您的 Managed 程式碼能夠讓使用任何程式語言的開發人員存取,.NET Framework 提供 Common Language Specification (CLS),其中說明一組基本語言功能,並定義如何使用這些功能的規則。如需元件和工具 CLS 符合性的詳細資訊,請參閱撰寫符合 CLS 標準的程式碼

請參閱

概念

Common Language Specification

撰寫符合 CLS 標準的程式碼

其他資源

.NET Framework 的概觀

一般型別系統

中繼資料和自我描述元件