Compartilhar via


DirectCast

Introduz uma operação de conversão de tipos baseadas em herança ou implementação.

Comentários

DirectCast não usa as rotinas auxiliares de tempo de execução do Visual Basic para conversão, portanto, ele poderá fornecer um desempenho melhor do que CType durante a conversão tendo como origem ou destino Object.

Você usa a palavra-chaveDirectCastda mesma maneira que usa as palavras-chave CType Function e a TryCast.Forneça uma expressão sistema autônomo primeiro argumento e um tipo para convertê-lo para sistema autônomo 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 de ou implementar o outro.

Erros e falhas

DirectCast 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, o tempo de execução gera um erro InvalidCastException.

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

CType Function

Quaisquer tipos de dados

Expandir ou restringir a conversão deve ser definido entre os dois tipos de dados.

Gera InvalidCastException

DirectCast

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 demonstra dois usos do 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 time de execução de q é Double. CType é bem-sucedida pois Double pode ser convertido em Integer. No entanto, o primeiro DirectCast falha no tempo de execução porque tem o tipo em tempo de execução de Double não tem relação de herança com Integer, mesmo que exista uma conversão.O segundo DirectCast é bem-sucedido pois ele converte do tipo Form para o tipo Control, do qual Form herda.

Consulte também

Conceitos

Conversões Ampliadoras e Redutoras

Conversões explícita e implícita 

Referência

Convert.ChangeType