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 com base na herança ou implementação.
Observações
DirectCast não usa as rotinas auxiliares de tempo de execução do Visual Basic para conversão, portanto, ele pode fornecer um desempenho um pouco melhor do que CType ao converter de e para tipo Objectde dados.
Use a DirectCast palavra-chave semelhante à maneira como usa o Operador CType e a palavra-chave Operador TryCast . Você fornece uma expressão como o primeiro argumento e um tipo para convertê-la como o segundo argumento.
DirectCast requer uma relação de herança ou implementação entre os tipos de dados dos dois argumentos. Isso significa que um tipo deve herdar ou implementar o outro.
Erros e falhas
DirectCast 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, o runtime gerará um InvalidCastException erro.
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 |
DirectCast |
Qualquer tipo de dados | Um tipo deve herdar ou implementar o outro tipo | Lança InvalidCastException |
| Operador TryCast | Somente tipos de referência | Um tipo deve herdar ou implementar o outro tipo | Retorna Nada |
Exemplo
O exemplo a seguir demonstra dois usos de DirectCast, um que falha em tempo de execução e outro que é bem-sucedido.
Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)
No exemplo anterior, o tipo de tempo de q execução é Double.
CType é bem-sucedido porque Double pode ser convertido em Integer. No entanto, o primeiro DirectCast falha em tempo de execução porque o tipo de tempo de execução não tem nenhuma relação de Double herança com Integer, mesmo que exista uma conversão. O segundo DirectCast é bem-sucedido porque converte de tipo em tipoFormControl, do qual Form herda.