Managed Extensions for C++(托管擴展)是 Visual C++ 針對 .NET Framework 的語言擴展,允許在單一應用程式中自由混合原生與托管代碼,保護既有投資並漸進式遷移。
__gc class 關鍵字標記,編譯為 .NET 參考型別,享有 GC、屬性、事件、介面等 CLI 功能。/clr 編譯選項啟用,單一原始檔可同時包含原生與托管函式/類別。元件級逐步轉換,核心效能敏感模組保留原生,介面層轉為托管,維持單一專案建置。
// 原生類別
class NativeCalc { public: int Add(int a, int b); };
// 托管封裝器
__gc class ManagedCalc {
NativeCalc* pImpl;
public:
ManagedCalc() : pImpl(new NativeCalc) {}
~ManagedCalc() { delete pImpl; }
int Add(int a, int b) { return pImpl->Add(a, b); }
};
C# 僅見 ManagedCalc,完全不知原生實作細節。
托管擴展允許原生函式直接 gcnew .NET 物件、呼叫 BCL 方法,無需 COM Interop 開銷。視專案需求,亦可選擇現有 COM 基礎設施互通。
托管擴展為舊語法(雙底線關鍵字),Visual Studio 2005 推出 C++/CLI(/clr:newSyntax)作為後繼標準,新專案建議直接採用 C++/CLI。