決定物件類型 (Visual Basic)
泛型物件變數 (亦即宣告為 Object
的變數) 可以保留任何類別的物件。 使用型別 Object
的變數時,您可能需要根據物件的類別採取不同的動作,例如某些物件可能不支援特定的屬性或方法。 Visual Basic 提供兩種方法來判斷儲存在物件變數的物件屬於哪種型別:TypeName
函式和 TypeOf...Is
運算子。
TypeName 和 TypeOf…Is
TypeName
函式會傳回字串,是您需要儲存或顯示物件類別名稱時的最佳選擇,如下列程式碼片段所示:
Dim Ctrl As Control = New TextBox
MsgBox(TypeName(Ctrl))
TypeOf...Is
運算子是測試物件型別的最佳選擇,因為它比使用 TypeName
的對等字串更快。 下列程式碼片段會在 If...Then...Else
陳述式中使用 TypeOf...Is
:
If TypeOf Ctrl Is Button Then
MsgBox("The control is a button.")
End If
此處應會出現警告。 如果物件是特定型別,或衍生自特定型別,則 TypeOf...Is
運算子會傳回 True
。 使用 Visual Basic 執行的幾乎所有操作都涉及物件,而物件中包括幾種通常不會視為物件的元素,例如字串和整數。 這些物件衍生自 Object,並會從中繼承方法。 TypeOf...Is
運算子在傳遞 Integer
並使用 Object
進行評估時,會傳回 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