Оператор 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.