C++/CLI 重新設計 CLR 支援,目標:成為 CLR 平台最低階語言,讓 .NET 程式設計如原生 C++ 般自然。
| 原生 C++ | C# | 託管 C++ | C++/CLI | |
|---|---|---|---|---|
| 值類型(堆疊) | Type t; | Type t = new Type(); | Type t(args); | Type t(args); |
| 參考類型(GC 堆) | Type* p = new Type; | Type t = new Type(); | Type^ p = gcnew Type; / Type* p = new Type; (模糊) | Type^ h = gcnew Type; |
new 模糊性。DateTime dt(2003,1,18); 無 new 關鍵字。
Foo* pf = new Foo(); // 原生:CRT 堆,需 delete,支援指標運算
Foo^ hf = gcnew Foo(); // 託管:GC 堆,自動回收,不支援指標運算,支援 ^ 解參考
C++/CLI 消除託管 C++ 中「看不出配置位置」的模糊性,讓物件建構語義清晰、型別安全。