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


Оператор TypeOf (Visual Basic)

Обновлен: Ноябрь 2007

Сравнивает переменную объектной ссылки с типом данных.

result = TypeOf objectexpression Is typename

Компоненты

  • result
    Возвращенное. Значение Boolean.

  • objectexpression
    Обязательно. Любое выражение, значение которого является ссылочным типом.

  • typename
    Обязательно. Любое имя типа данных.

Заметки

Оператор TypeOf определяет, совместим ли тип времени выполнения выражения objectexpression с typename. Совместимость зависит от категории типа typename. В следующей таблице показано, как определяется совместимость.

Введите категорию typename

Критерий совместимости

Класс

objectexpression имеет тип typename или наследует от typename

Структура

objectexpression имеет тип данных typename

Интерфейс

objectexpression реализует typename или наследует от класса, реализующего typename

Если тип времени выполнения выражения objectexpression удовлетворяет условию совместимости, result является True. В противном случае result является False.

TypeOf всегда используется с ключевым словом Is для построения выражения TypeOf... Is.

Пример

В следующем примере выражения 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.

См. также

Основные понятия

Операторы сравнения в Visual Basic

Операторы и выражения в Visual Basic

Ссылки

Оператор Is (Visual Basic)

Оператор IsNot

Порядок применения операторов в Visual Basic

Список операторов, сгруппированных по функциональному назначению