作为通用数据类型的对象 (Visual Basic)

Object 数据类型是 .NET Framework 和 Visual Basic 中的根类型。 这意味着所有其他数据类型和对象类型都是直接或最终由它派生的。 同时也意味着其他任何数据类型(不论是基本数据类型还是复合数据类型)都可以转换为 Object。

松散类型

可以将 Object 用作通用数据类型。 这称为“松散类型”。 下面的示例阐释了这种灵活性。

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)

Visual Basic 中的类型检查

有效使用数据类型 (Visual Basic)

对象变量声明 (Visual Basic)

对象变量赋值 (Visual Basic)

对象变量值 (Visual Basic)

其他资源

Visual Basic 中的类型转换