Operador TryCast (Visual Basic)
Apresenta uma operação de conversão de tipo que não gera uma exceção.
Comentários
Se uma tentativa de conversão falhar, CType e DirectCast ambos lançam uma InvalidCastException erro. Isso pode afetar o desempenho do seu aplicativo. TryCastRetorna Nada (Visual Basic), de modo que, em vez de lidar com uma possível exceção, você só precisa testar o resultado retornado contra Nothing.
Você usa a palavra-chaveTryCastda mesma maneira que usa as palavras-chave Função CType (Visual Basic) e a Operador DirectCast (Visual Basic). Você fornecer uma expressão, como o primeiro argumento e um tipo para convertê-lo para como o segundo argumento. TryCastopera somente em tipos de referência, como, por exemplo, classes e interfaces. Ele requer uma relação entre os dois tipos de herança ou implementação. Isso significa que um tipo deve herdar de ou implementar o outro.
Erros e falhas
TryCast gera um erro do compilador se ele detectar que nenhuma relação de herança ou implementação existe. Mas a falta de um erro do compilador não garante uma conversão bem-sucedida. Se a conversão desejada é de restrição, ele pode falhar em tempo de execução. Se isso acontecer, TryCast retorna Nada (Visual Basic).
Palavras-chave conversão
Uma comparação entre as palavras-chave conversão de tipos é a seguinte:
Keyword |
Tipos de dados |
Relacionamento de argumento |
Falha em tempo de execução |
Quaisquer tipos de dados |
Expandir ou restringir a conversão deve ser definido entre os dois tipos de dados. |
Gera InvalidCastException |
|
Quaisquer tipos de dados |
Um tipo deve herdar de ou implementar o outro tipo |
Gera InvalidCastException |
|
TryCast |
Somente tipos de referência |
Um tipo deve herdar de ou implementar o outro tipo |
Retorna Nada (Visual Basic) |
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