做為通用資料型別的物件

更新:2007 年 11 月

Object 資料型別為 .NET Framework 和 Visual Basic 中的根型別。這表示,所有其他資料型別和物件型別都是直接或最終從其衍生而來的。也就是說,無論是基本或複合的任何其他資料型別都可以轉換為 Object。

鬆散型別

您可使用 Object 當成通用資料型別。這稱為「鬆散型別」(Loose Typing)。下面這個範例可說明這種彈性。

Dim v As Object
v = "17"
' v contains the 2-character String value "17".
v = v - 15
' v now contains the Integer value 2.
v = "H" & v
' v now contains the 2-character String value "H2".

儘管您可以在 Object 變數上執行這類運算,而不需太顧慮其所包含資料的種類,但請小心避免下列陷阱:

  • 如果在 Object 上執行算術運算或函式,其必須含有數字資料,否則會發生執行階段錯誤。

  • 當您串連字串時,請使用 & 運算子,不要使用 + 運算子。當 + 運算子加入其運算元並串連時,會由複雜的規則來管理。在某些情況下,+ 運算子也必須執行型別檢查和轉換,這會降低效能。

變更物件變數的資料型別

雖然 Object 變數可以接受任何型別的資料,但卻無法將變數本身變更為不同的資料型別。但您可以重新設定 Object 變數的維度使其成為 Object 變數的陣列。以下範例會說明有效及無效的 ReDim 陳述式 (Visual Basic) 用法。

' The following statement declares a single Object.
Dim someObj As Object
' The following reallocation is valid only for Object.
ReDim someObj(8)
' The following statement attempts an INVALID change of data type.
ReDim someObj(8) As Double

第一個 ReDim 陳述式會將 someObj 變更為 Object 型別的陣列。這只對 Object 資料型別有效。第二個 ReDim 陳述式無效,因為它包含不同的資料型別。使用個別陣列可以達成所要的效果。下面這個範例可說明這點:

' First allocate a separate array.
Dim someArray(8) As Double
' Then assign the new array to the Object variable.
someObj = someArray

使用物件取代結構

由於 Object 資料型別可以儲存許多不同型別的資料,因此在許多使用結構的情況下,您也可以使用 Object 陣列。Object 陣列比結構稍具彈性,因為您可以隨時變更儲存在每個元素中資料的型別,而且可以將陣列設為動態以便視需要變更其大小。不過,Object 陣列會比對等用法結構使用更多記憶體,所以效能較差。

請參閱

概念

Visual Basic 中的不具型別程式設計

隱含和明確宣告

Visual Basic 中的型別檢查

有效率地使用資料型別

物件變數宣告

物件變數指派

物件變數值

參考

資料型別摘要 (Visual Basic)

型別轉換函式

其他資源

Visual Basic 中的型別轉換