Поделиться через


Оператор 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, тоIsTypeOfFalseвозвращается и ...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 тем, что наследуется от Control, и IComponent с тем, что FormForm наследует от Component, который реализуетIComponent. Тем не менее, refForm несовместим с Label.

См. также