VS 2005 (Whidbey) 對 C++ 引入重大語法變革,核心目標:自然支援 CLR,成為 .NET 平台最低階語言。
舊版 __gc、__property 等雙底線關鍵字語法不自然,程式碼雜亂。新版以上下文關鍵字取代:
ref class 取代 __gc classproperty 取代 __propertydelegate、interface class、value class、enum classusing/try-finally 呼叫 Dispose(),非決定性。ref class 實例可宣告於堆疊,離開作用域自動呼叫解構函數 ~T()(對應 Dispose()),終結子 !T() 對應 Finalize()。
ref class Foo {
~Foo() { /* Dispose: 釋放所有資源 */ }
!Foo() { /* Finalize: 僅釋放非託管資源 */ }
};
~Foo()。Dispose() 時,GC 呼叫 !Foo() 確保非託管資源釋放。Foo* pf = new Foo(); 模糊:配置位置取決於 __gc。Foo^ hf = gcnew Foo(); 明確為 GC 堆,^ 為控制代碼,支援 */-> 解參考。
ref class R {
property int Size {
int get() { return m_size; }
void set(int v) { m_size = v; }
}
};
R r; r.Size = 42; // 自然語法
property 為上下文關鍵字,不衝突識別符。get_Size/set_Size 與中繼資料。property int Size;)。VS 2005 讓 C++ 以自然語法完整支援 CLR:無雙底線、決定性清理、明確控制代碼、原生屬性,成為 .NET 平台最強大、最高效的語言。