Compartilhar via


Operador DirectCast (Visual Basic)

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ê pode usar o DirectCast a palavra-chave semelhante à maneira como você pode usar o Função CType (Visual Basic) e o Operador TryCast (Visual Basic) palavra-chave. Você fornecer uma expressão, como o primeiro argumento e um tipo para convertê-lo para como o segundo argumento. DirectCastrequer 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

Função CType (Visual Basic)

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

Operador TryCast (Visual Basic)

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 tempo de execução digite 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

Referência

Convert.ChangeType

Conceitos

Conversões de Widening e Narrowing (Visual Basic)

Conversões implícitas e explícitas (Visual Basic)