Object 数据类型

保存引用对象的地址。可以为 Object 的变量分配任何引用类型(字符串、数组、类或接口)。Object 变量还可以引用任何值类型(数值、Boolean、Char、Date、结构或枚举)的数据。

备注

Object 数据类型可以指向任意数据类型的数据,包括您的应用程序识别的任意对象实例。当您在编译时不知道变量可能指向哪种数据类型时,请使用 Object。

Object 的默认值为 Nothing(null 引用)。

数据类型

可以将任何数据类型的变量、常数或表达式赋给 Object 变量。若要确定 Object 变量当前引用的数据类型,您可以使用 System.Type 类的 GetTypeCode 方法。下面的示例阐释了这一点。

Dim myObject As Object
' Suppose myObject has now had something assigned to it.
Dim datTyp As Integer
datTyp = Type.GetTypeCode(myObject.GetType())

Object 数据类型为引用类型。但是,当 Object 变量引用值类型的数据时,Visual Basic 将此变量视为一个值类型。

存储

无论它引用什么数据类型,Object 变量都不包含数据值本身,而是指向该值的一个指针。它总是在计算机内存中使用四个字节,但这不包括表示变量值的数据的存储。由于使用指针定位数据的代码的缘故,访问持有值类型的 Object 变量比访问显式声明类型的变量速度稍慢。

编程提示

  • **互操作注意事项。**如果您正连接到不是为 .NET Framework 编写的组件,例如 Automation 或 COM 对象,请记住其他环境中的指针类型与 Visual Basic Object 类型不兼容。

  • **性能。**用 Object 类型声明的变量足够灵活,可以包含对任何对象的引用。但是,在这样一个变量上调用方法或属性时,总是会遇到后期绑定(在运行时)。若要强制前期绑定(在编译时)和提高性能,请用特定的类名称声明变量,或将它强制转换为特定数据类型。

    当您声明一个对象变量时,请尝试使用特定的类类型,例如 OperatingSystem,而不是普通的 Object 类型。还应使用可用的最具体的类,例如 TextBox 而不是 Control,这样就可以访问其属性和方法。通常可以使用**“对象浏览器”中的“类”**列表来查找可用的类名。

  • **扩大。**所有数据类型和所有引用类型均扩大至 Object 数据类型。这意味着您可以将任意类型转换为 Object,而不会遇到 System.OverflowException 错误。

    但是,如果您在值类型和 Object 之间转换,Visual Basic 会执行称为装箱和取消装箱的操作,这将减慢执行速度。

  • **类型字符。**Object 不包含文本类型字符或标识符类型字符。

  • Framework 类型。.NET Framework 中的对应类型是 System.Object 类。

示例

下面的示例演示一个 Object 变量,它指向一个对象实例。

Dim objDb As Object
Dim myCollection As New Collection()
' Suppose myCollection has now been populated.
objDb = myCollection.Item(1)

请参见

任务

如何:确定两个对象是否相关 (Visual Basic)

如何:确定两个对象是否相同 (Visual Basic)

参考

数据类型摘要 (Visual Basic)

Object

类型转换函数 (Visual Basic)

转换摘要 (Visual Basic)

概念

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