Operador DirectCast (Visual Basic)

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 a função CType 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
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
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.

Consulte também