決定物件型別
更新:2007 年 11 月
泛型物件變數 (也就是您宣告為 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 陳述式 (Statement) 中。
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
請參閱
概念
參考
If...Then...Else 陳述式 (Visual Basic)