Оператор 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
Ссылки
Порядок применения операторов в Visual Basic
Список операторов, сгруппированных по функциональному назначению