做為通用資料型別的物件
更新: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 陣列會比對等用法結構使用更多記憶體,所以效能較差。