Compartilhar via


Determinando o tipo de objeto (Visual Basic)

Variáveis de objeto genérico (ou seja, variáveis que você declara como Object) podem conter objetos de qualquer classe. Ao usar variáveis de tipo Object, talvez seja necessário executar ações diferentes com base na classe do objeto; por exemplo, alguns objetos podem não dar suporte a uma propriedade ou método específico. O Visual Basic fornece dois meios para determinar qual tipo de objeto é armazenado em uma variável de objeto: a TypeName função e o TypeOf...Is operador.

TypeName e TypeOf... É

A TypeName função retorna uma cadeia de caracteres e é a melhor opção quando você precisa armazenar ou exibir o nome da classe de um objeto, conforme mostrado no seguinte fragmento de código:

Dim Ctrl As Control = New TextBox
MsgBox(TypeName(Ctrl))

O TypeOf...Is operador é a melhor opção para testar o tipo de um objeto, pois ele é muito mais rápido do que uma comparação de cadeia de caracteres equivalente usando TypeName. O seguinte fragmento de código é usado TypeOf...Is em uma instrução If...Then...Else :

If TypeOf Ctrl Is Button Then
    MsgBox("The control is a button.")
End If

Uma palavra de cautela é devido aqui. O TypeOf...Is operador retorna True se um objeto for de um tipo específico ou for derivado de um tipo específico. Quase tudo o que você faz com o Visual Basic envolve objetos, que incluem alguns elementos normalmente não considerados como objetos, como cadeias de caracteres e inteiros. Esses objetos são derivados e herdam métodos de Object. Quando passado um Integer e avaliado com Object, o TypeOf...Is operador retorna True. O exemplo a seguir relata que o parâmetro InParam é um Object e um 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

O exemplo a seguir usa ambos TypeOf...Is e TypeName para determinar o tipo de objeto passado para ele no Ctrl argumento. O TestObject procedimento chama ShowType com três tipos diferentes de controles.

Para executar o exemplo

  1. Crie um novo projeto de Aplicativo do Windows e adicione um Button controle, um CheckBox controle e um RadioButton controle ao formulário.

  2. No botão em seu formulário, chame o TestObject procedimento.

  3. Adicione o código a seguir ao seu formulário:

    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
    

Confira também