一般型別系統中的指標

更新:2007 年 11 月

指標是特殊的變數。Runtime 支援的指標有三種:Managed 指標、Unmanaged 指標和 Unmanaged 函式指標。

Managed 指標也稱為 Managed 堆積上物件的控制代碼 (Handle),它是 Managed 應用程式可用的新型態指標。Managed 指標是從 Common Language Runtime 堆積指到記憶體 Managed 區塊的參考。自動記憶體回收就是在這個堆積 (Heap) 上執行。Managed 指標是為以傳址方式傳遞的引數產生的。有些語言還會提供其他產生 Managed 指標的方式。只有 Managed 指標符合 CLS 標準。

注意事項:

Visual C++ 2002 和 Visual C++ 2003 使用 __gc * 來宣告 Managed 指標。在 Visual C++ 2005 中則以 ^ 取代,例如 ArrayList^ al = gcnew ArrayList();。

Unmanaged 指標是從標準 C++ 堆積指到記憶體 Unmanaged 區塊的傳統 C++ 指標。由於 Unmanaged 指標並不屬於通用語言規格 (Common Language Specification,CLS),因此您所使用的語言可能不會提供定義或存取這些型別的語法。如需 Unmanaged 指標支援的詳細資訊,請參閱語言的文件。

Unmanaged 函式指標也是參考函式位址的傳統 C++ 指標CLS 提供委派做為 Unmanaged 函式指標的 Managed 替代項目。

指標型別不需要明確的定義。在宣告指標時,會提供判斷指標型別的所有必要資訊。

雖然指標型別是參考型別,但是指標型別的值不是物件,因此您無法從這個值判斷出確實的型別。

一般型別系統在指標型別上提供了兩種型別安全作業:從指標參考的位置載入數值,以及將數值寫入指標參考的位置。這些型別安全作業都符合 CLS 標準。

一般型別系統在指標型別上還提供了三種以位元組為基礎的位址算術作業:將整數加到指標上、從指標減去整數,以及從指標減去另一個指標。前兩項計算的結果會傳回與原始指標相同型別的值。這些以位元組為基礎的作業和 CLS 不相容。

請參閱

概念

Common Language Specification

撰寫符合 CLS 標準的程式碼

其他資源

一般型別系統