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 TryCast
o .
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