Compartilhar via


Operador DirectCast (Visual Basic)

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.

Consulte também