共用方式為


決定物件類型 (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 同時是 ObjectInteger

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...IsTypeName 來判斷在 Ctrl 引數中傳遞給它的物件型別。 TestObject 程序會使用三種不同控制項類型呼叫 ShowType

執行範例

  1. 建立新的 Windows 應用程式專案,並將 Button 控制項、CheckBox 控制項和 RadioButton 控制項新增至表單。

  2. 從表單上的按鈕呼叫 TestObject 程序。

  3. 將下列程式碼新增至表單:

    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
    

另請參閱