Определение типа объекта
Обновлен: Ноябрь 2007
Универсальные объектные переменные (переменные, объявляемые как Object) содержат объекты любого класса. При использовании переменных типа Object, может потребоваться выполнить различные действия на основе класса объекта; например, некоторые объекты могут не поддерживать конкретное свойство или метод.Visual Basic предоставляет два средства определения типа объекта, хранящегося в переменной объекта: функцию TypeName и оператор TypeOf...Is.
TypeOf…Is и TypeName
Функция TypeName возвращает строку. Эта функция наиболее удобна при необходимости сохранить или отобразить имя класса объекта, как показано в следующем фрагменте кода:
Dim Ctrl As Control = New TextBox
MsgBox(TypeName(Ctrl))
Оператор TypeOf...Is наиболее удобен при проверке типа объекта, поскольку он работает намного быстрее, чем эквивалентная операция сравнения строк с помощью TypeName. В следующем фрагменте кода используется TypeOf...Is внутри инструкции If...Then...Else:
If TypeOf Ctrl Is Button Then
MsgBox("The control is a button.")
End If
А теперь несколько слов предостережения. Оператор TypeOf...Is возвращает True, если объект имеет конкретный тип или является производным от конкретного типа. Почти все в Visual Basic выполняется с помощью объектов, содержащих некоторые элементы, которые не считаются обычно объектами, например строки и целые числа. Эти объекты являются производными и наследуют методы от Object. При передаче Integer и вычислении с Object оператор TypeOf...Is возвращает True. В следующем примере сообщается, что параметр InParam является и Object, и Integer:
Sub CheckType(ByVal InParam As Object)
' Both If statements evaluate to True when an
' Integer is passed to this procedure.
If TypeOf InParam Is Object Then
MsgBox("InParam is an Object")
End If
If TypeOf InParam Is Integer Then
MsgBox("InParam is an Integer")
End If
End Sub
В следующем примере используются и TypeOf...Is, и TypeName для определения типа объекта, переданного в аргументе Ctrl. Процедура TestObject вызывает ShowType с тремя разными типами элементов управления.
Для запуска примера
Создайте новый проект приложения Windows и добавьте элементы управления Button, CheckBox и RadioButton на форму.
С помощью кнопки на форме вызовите процедуру TestObject.
Добавьте следующий код в форму:
Sub ShowType(ByVal Ctrl As Object) 'Use the TypeName function to display the class name as text. MsgBox(TypeName(Ctrl)) 'Use the TypeOf function to determine the object's type. If TypeOf Ctrl Is Button Then MsgBox("The control is a button.") ElseIf TypeOf Ctrl Is CheckBox Then MsgBox("The control is a check box.") Else MsgBox("The object is some other type of control.") End If End Sub Protected Sub TestObject() 'Test the ShowType procedure with three kinds of objects. ShowType(Me.Button1) ShowType(Me.CheckBox1) ShowType(Me.RadioButton1) End Sub
См. также
Основные понятия
Вызов свойства или метода с помощью строкового имени
Ссылки
Функция TypeName (Visual Basic)
Оператор If...Then...Else (Visual Basic)
Строковый тип данных (String) (Visual Basic)
Тип данных Integer (Visual Basic)