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 CType conversão falhar e DirectCast ambos lançarem um InvalidCastException erro. Isso pode afetar negativamente o desempenho do seu 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 a Nothing.

Você usa a TryCast palavra-chave da mesma forma que usa a função CType e a palavra-chave DirectCast Operator . Você fornece uma expressão como o primeiro argumento e um tipo para convertê-lo como o segundo argumento. TryCast opera apenas em tipos de referência, como classes e interfaces. 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 Gera um erro de compilador se detetar 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 se estreitando, ela poderá falhar em tempo de execução. Se isso acontecer, TryCast retorna 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
Função CType Qualquer tipo de dados A conversão de alargamento ou estreitamento deve ser definida entre os dois tipos de dados Lançamentos InvalidCastException
Operador DirectCast Qualquer tipo de dados Um tipo deve herdar ou implementar o outro tipo Lançamentos InvalidCastException
TryCast Apenas tipos de referência Um tipo deve herdar ou implementar o outro tipo Não devolve nada

Exemplo

O exemplo a seguir mostra como usar TryCasto .

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