Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Introduz uma operação de conversão de tipo com base em 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 para e do tipo Objectde dados.
Você usa a DirectCast palavra-chave semelhante à maneira como você usa o CType Operator e a palavra-chave TryCast Operator . Você fornece uma expressão como o primeiro argumento e um tipo para convertê-lo 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 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, o tempo de execução lança 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 alargamento ou estreitamento deve ser definida entre os dois tipos de dados | Lançamentos InvalidCastException |
DirectCast |
Qualquer tipo de dados | Um tipo deve herdar ou implementar o outro tipo | Lançamentos InvalidCastException |
| Operador TryCast | Apenas tipos de referência | Um tipo deve herdar ou implementar o outro tipo | Não devolve 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 execução de q é 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 relação de Double herança com Integero , mesmo que exista uma conversão. O segundo DirectCast é bem-sucedido porque converte de tipo Form para tipo Control, do qual Form herda.