共用方式為


Common Language Runtime 概觀

更新:2007 年 11 月

編譯器 (Compiler) 和工具會公開 Runtime 的功能,並且可以讓您撰寫從這個 Managed 執行環境獲益的程式碼。以 Runtime 為目標的語言編譯器所開發的程式碼稱為 Managed 程式碼;它可因某些功能而得到改進,例如跨程式語言整合、跨程式語言例外處理 (Exception Handling)、增強的安全性、版本控制和部署支援、元件互動的簡化模型,以及偵錯和設定檔服務。

若要讓 Runtime 能夠提供服務給 Managed 程式碼,語言編譯器必須發出描述程式碼中型別、成員和參考的中繼資料。中繼資料是與程式碼一起儲存;每一個可載入的 Common Language Runtime 可移植執行檔 (PE) 都包含中繼資料。Runtime 使用中繼資料來找出並載入類別、配置記憶體中的執行個體 (Instance)、解析方法引動過程 (Method Invocation)、產生機器碼、強制使用安全性,和設定 Run-Time 內容界限 (Context Boundary)。

Runtime 會自動處理物件配置和管理物件的參考,並在它們不再被使用時將它們釋出。以這個方式管理存留期 (Lifetime) 的物件稱為 Managed 資料。記憶體回收排除記憶體遺漏 (Memory Leak) 和其他常見的程式設計錯誤。如果您的程式碼為 Managed,您可以在 .NET Framework 應用程式中使用 Managed 資料、Unmanaged 資料或兩者。由於語言編譯器提供它們自己的型別 (如基本型別),您可能不一定知道 (或需要知道) 資料是否為 Managed。

Common Language Runtime 使得設計其物件可跨語言互動的元件和應用程式更為容易。不同語言所撰寫的物件可以彼此通訊,而且它們的行為可以緊密整合。例如,您可以定義一個類別,並接著使用不同語言從您的原始類別來衍生類別,或呼叫原始類別上的方法。您也可以傳遞類別的執行個體給不同語言撰寫的類別的方法。這個跨程式語言整合是可能的,因為以 Runtime 為目標的語言編譯器和工具會使用 Runtime 所定義的一般型別系統,而且它們會遵照 Runtime 的規則來定義新型別,以及建立、使用、保存 (Persist) 和繫結至型別。

所有 Managed 元件都攜帶它們據以建置 (Build) 元件和資源的資訊,做為其中繼資料的一部分。Runtime 使用這個資訊,確保元件或應用程式擁有其所需的一應俱全的指定版本,使程式碼較不可能因某些不符合的相依性而中斷。註冊資訊和狀態資料不再儲存於登錄,因為可能難以在其中建立和維護它們。更確切地說,若您定義的型別資訊 (和它們的相依性) 與程式碼一起儲存為中繼資料,會使元件複寫和移除的工作比較不複雜得多。

語言編譯器和工具會以旨在對開發人員有用處而且直覺的方式,公開 Runtime 的功能。這意謂 Runtime 的一些功能在某個環境中可能比在另一個環境更值得注意。您如何感受 Runtime 取決於您使用哪一種語言編譯器或工具。例如,如果您是 Visual Basic 開發人員,您可能注意到,有了 Common Language Runtime 之後,Visual Basic 語言具有比從前更多的物件導向功能。以下為 Runtime 的一些優點:

  • 效能改善。

  • 易於使用以其他語言開發的元件的能力。

  • 類別庫 (Class Library) 提供的擴充式型別。

  • 新的語言功能,例如物件導向程式設計的繼承 (Inheritance)、介面和多載化 (Overloading);允許建立多執行緒、可擴充應用程式的明確無限制執行緒 (Free Threading) 的支援;結構化例外處理 (Structured Exception Handling) 和自訂屬性 (Attribute) 的支援。

如果您使用 Microsoft® Visual C++® .NET,便能使用 Visual C++ 撰寫 Managed 程式碼,這個語言提供了 Managed 執行環境的優點,而且能夠存取您所熟悉的強大功能和含意豐富的資料型別。其他 Runtime 功能包括:

  • 跨程式語言整合,特別是跨程式語言繼承。

  • 記憶體回收管理物件存留期 (Lifetime),因此不需要參考計數 (Reference Counting)。

  • 自我描述的物件,它令介面定義語言 (IDL) 的使用變得沒有必要。

  • 一次編譯而可執行於任何 CPU 和支援 Runtime 的作業系統的能力。

您也可以使用 C# 語言來撰寫 Managed 程式碼,這語言提供下列好處:

  • 完整物件導向設計。

  • 非常強大的型別安全 (Type Safety)。

  • Visual Basic 的簡單明瞭和 C++ 的強大功能的良好調和。

  • 記憶體回收。

  • 類似 C 和 C++ 的語法和關鍵字。

  • 委派的使用,而非會增加型別安全和安全性顧慮的函式指標。函式指標是透過使用 unsafe C# 關鍵字和 C# 編譯器 (Csc.exe) 的 /unsafe 選項,用於 Unmanaged 程式碼和資料。

請參閱

概念

Managed 執行程序

其他資源

.NET Framework 的概觀