Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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