Compartilhar via


Operador TryCast (Visual Basic)

Introduz uma operação de conversão de tipo que não gera uma exceção.

Observações

Se uma tentativa de conversão falhar CType e DirectCast ambos gerarem um InvalidCastException erro. Isso pode afetar negativamente o desempenho do aplicativo. TryCast retorna Nothing, de modo que, em vez de ter que lidar com uma possível exceção, você só precisa testar o resultado retornado em relação Nothinga .

Use a TryCast palavra-chave da mesma maneira que usa o Operador CType e a palavra-chave operador DirectCast . Você fornece uma expressão como o primeiro argumento e um tipo para convertê-la como o segundo argumento. TryCast opera somente em tipos de referência, como classes e interfaces. Ele requer uma relação de herança ou implementação entre os dois tipos. Isso significa que um tipo deve herdar ou implementar o outro.

Erros e falhas

TryCast gerará um erro do compilador se detectar que não existe nenhuma relação de herança ou implementação. Mas a falta de um erro do compilador não garante uma conversão bem-sucedida. Se a conversão desejada estiver diminuindo, ela poderá falhar em tempo de execução. Se isso acontecer, TryCastretornará Nothing.

Palavras-chave de conversão

Uma comparação das palavras-chave de conversão de tipo é a seguinte.

Palavra-chave Tipos de dados Relação de argumento Falha em tempo de execução
Operador CType Qualquer tipo de dados A conversão de ampliação ou restrição deve ser definida entre os dois tipos de dados Lança InvalidCastException
Operador DirectCast Qualquer tipo de dados Um tipo deve herdar ou implementar o outro tipo Lança InvalidCastException
TryCast Somente tipos de referência Um tipo deve herdar ou implementar o outro tipo Retorna Nada

Exemplo

O exemplo a seguir mostra como usar TryCast.

Function PrintTypeCode(ByVal obj As Object) As String
    Dim objAsConvertible As IConvertible = TryCast(obj, IConvertible)
    If objAsConvertible Is Nothing Then
        Return obj.ToString() & " does not implement IConvertible"
    Else
        Return "Type code is " & objAsConvertible.GetTypeCode()
    End If
End Function

Consulte também