托管擴展是 Microsoft Visual C++ 為 .NET Framework 引入的一組關鍵字與屬性,允許開發者在 C++ 中撰寫受 CLR (Common Language Runtime) 管理的類別 (Managed Class),同時保留原生 C++ 的高效能與靈活性。核心關鍵字:__gc, __value, __interface, __box, __pin 等 (雙底線語法)。
__gc class)__pin 固定指標)。
// 原生類別
class NativeClass { public: void DoWork(); };
// 托管包裝器
__gc class ManagedWrapper {
NativeClass* pNative;
public:
ManagedWrapper() : pNative(new NativeClass) {}
~ManagedWrapper() { delete pNative; } // 解構函數釋放原生資源
void DoWork() { pNative->DoWork(); } // 轉發呼叫
};
// C# 消費者
// ManagedWrapper mw = new ManagedWrapper();
// mw.DoWork();
編譯器自動處理基本類型 (int, double, bool 等)、字串 (System::String ↔ const char*)、陣列、委派等常見類型的雙向轉換。複雜類型需手工編寫封送邏輯。
Visual C++ 2005 引入 C++/CLI (ECMA-372 標準),以更優雅語法 (ref class, value class, interface class, ^, %) 取代雙底線語法。托管擴展仍被支援但標記為過時,**新專案強烈建議直接採用 C++/CLI**。