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

См. также