Оператор TypeOf (Visual Basic)
Сравнивает переменную объектной ссылки с типом данных.
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)