TypeOf 演算子 (Visual Basic)
オブジェクト参照変数をデータ型と比較します。
result = TypeOf objectexpression Is typename
指定項目
result
戻り値です。 Boolean 値。objectexpression
必ず指定します。 参照型に評価される式を指定します。typename
必ず指定します。 データ型の名前です。
解説
TypeOf 演算子は、objectexpression のランタイム型に typename との互換性があるかどうかを判断します。 互換性があるかどうかは typename の型のカテゴリによって決まります。 次の表に、互換性の条件を示します。
typename の型のカテゴリ |
互換性の条件 |
---|---|
Class |
objectexpression の型が typename、または typename から継承した型 |
Structure |
objectexpression は typename 型です。 |
Interface |
objectexpression が typename を実装しているか、typename を実装しているクラスから継承している |
objectexpression のランタイム型が互換性の条件を満たしていれば、result は True になります。 それ以外の場合、result は False になります。
TypeOf には必ずキーワード Is を指定して、TypeOf...Is 式の形で使用します。
使用例
TypeOf...Is 式を使用して、2 つのオブジェクト参照変数とさまざまなデータ型の間で、型の互換性をテストする例を次に示します。
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 は IComponent を継承し、Component を実装しているから) です。 しかし、refForm は Label と互換性がありません。