Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Универсальные переменные объекта (то есть переменные, объявленные как Object) могут содержать объекты из любого класса. При использовании переменных типа Objectможет потребоваться выполнить различные действия на основе класса объекта. Например, некоторые объекты могут не поддерживать определенное свойство или метод. Visual Basic предоставляет два средства определения типа объекта, хранящегося в переменной объекта: TypeName функции и TypeOf...Is оператора.
TypeName и TypeOf…Is
Функция 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