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
的运行时类型满足兼容性条件,则 result
是 True
。 否则 result
为 False
。 如果 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)。 但是,refForm
与 Label 不兼容。