TypeOf 运算符 (Visual Basic)

检查表达式结果的运行时类型是否与指定类型兼容。

语法

result = TypeOf objectexpression Is typename  
result = TypeOf objectexpression IsNot typename  

组成部分

result
返回。 一个 Boolean 值。

objectexpression
必需。 计算结果为引用类型的任何表达式。

typename
必需。 任何数据类型名。

注解

TypeOf 运算符确定 objectexpression 的运行时类型是否与 typename 兼容。 兼容性取决于 typename 的类型类别。 下表显示如何确定兼容性。

typename 的类型类别 兼容性条件
objectexpression 属于类型 typename 或继承自 typename
结构 objectexpression 属于类型 typename
接口 objectexpression 实现 typename 或继承自实现 typename 的类

如果 objectexpression 的运行时类型满足兼容性条件,则 resultTrue。 否则 resultFalse。 如果 objectexpression 为 null,则 TypeOf...Is 返回 False,...IsNot 返回 True

TypeOf 始终与 Is 关键字一起使用来构造 TypeOf...Is 表达式,或与 IsNot 关键字一起使用来构造 TypeOf...IsNot 表达式。

示例

下面的示例使用 TypeOf...Is 表达式测试具有不同数据类型的两个对象引用变量的类型兼容性。

Dim refInteger As Object = 2
MsgBox("TypeOf Object[Integer] Is Integer? " & TypeOf refInteger Is Integer)
MsgBox("TypeOf Object[Integer] Is Double? " & TypeOf refInteger Is Double)
Dim refForm As Object = New System.Windows.Forms.Form
MsgBox("TypeOf Object[Form] Is Form? " & TypeOf refForm Is System.Windows.Forms.Form)
MsgBox("TypeOf Object[Form] Is Label? " & TypeOf refForm Is System.Windows.Forms.Label)
MsgBox("TypeOf Object[Form] Is Control? " & TypeOf refForm Is System.Windows.Forms.Control)
MsgBox("TypeOf Object[Form] Is IComponent? " & TypeOf refForm Is System.ComponentModel.IComponent)

变量 refInteger 具有运行时类型 Integer。 它与 Integer 兼容,但不与 Double 兼容。 变量 refForm 具有运行时类型 Form。 它与 Form 兼容因为这是其类型,与 Control 兼容因为 Form 继承自 Control,与 IComponent 兼容因为 Form 继承自 Component(它实现 IComponent)。 但是,refFormLabel 不兼容。

另请参阅