Compartilhar via


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

Uma conversão implícita não requer qualquer síntaxe especial no código fonte. No exemplo a seguir, Visual Basic implicitamente converte o valor de k em um valor de ponto flutuante antes designá-lo a q.

Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = k

Uma conversão explícita usa uma palavra-chave para a conversão de tipos. Visual BasicFornece palavras-vários tal chave, que forçar uma expressão entre parênteses para o tipo de dados desejados. Essas palavras-chave atuam como funções, mas o compilador gera o código embutido, portanto execução é ligeiramente mais rápido do que com um chamada de função.

Na seguinte extensão do exemplo anterior, a palavra-chave CInt converte o valor de q novamente como um número inteiro antes de atribuí-lo para k.

' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).

Palavras-chave conversão

A tabela a seguir mostra as palavras-chave conversão disponível.

Palavra-chave conversão tipo

Converte uma expressão em tipo de dados

Tipos de dados permitido de expressão a ser convertido

CBool

Tipo de dados booliano (Visual Basic)

Qualquer tipo numérico (incluindo Byte, SByte e os tipos enumerados), String, Object

CByte

Tipo de dados Byte (Visual Basic)

Qualquer tipo numérico (incluindo SByte, Boolean e os tipos enumerados), String, Object

CChar

Tipo de dados Char (Visual Basic)

String, Object

CDate

Tipo de dados Data (Visual Basic)

String, Object

CDbl

Tipo de dados double (Visual Basic)

Qualquer tipo numérico (incluindo Byte, SByte e os tipos enumerados), Boolean, String,Object

CDec

Tipo de dados decimal (Visual Basic)

Qualquer tipo numérico (incluindo Byte, SByte e os tipos enumerados), Boolean, String,Object

CInt

Tipo de dados inteiro (Visual Basic)

Qualquer tipo numérico (incluindo Byte, SByte e os tipos enumerados), Boolean, String,Object

CLng

Tipo de dados Long (Visual Basic)

Qualquer tipo numérico (incluindo Byte, SByte e os tipos enumerados), Boolean, String,Object

CObj

Tipo de dados Object

Qualquer tipo

CSByte

Tipo de dados SByte (Visual Basic)

Qualquer tipo numérico (incluindo Byte, Boolean e os tipos enumerados), String, Object

CShort

Tipo de dados curto (Visual Basic)

Qualquer tipo numérico (incluindo Byte, SByte e os tipos enumerados), Boolean, String,Object

CSng

Tipo de dados único (Visual Basic)

Qualquer tipo numérico (incluindo Byte, SByte e os tipos enumerados), Boolean, String,Object

CStr

Tipo de dados da cadeia de caracteres (Visual Basic)

Qualquer tipo numérico (incluindo Byte, SByte e os tipos enumerados), Boolean, Char,matriz Char,Date,Object

CType

Tipo especificado após a vírgula (,)

Ao converter para um Tipo de dados elementar (incluindo uma matriz de um tipo elementar) os mesmos tipos como permitido para a palavra-chave conversão correspondente

Ao converter em interfaces um tipo de dados composto, o ele implementa e as classes do qual ele herda

Ao converter a uma classe ou estrutura na qual você tenha sobrecarregado CType, que classe ou estrutura

CUInt

Tipo de dados UInteger

Qualquer tipo numérico (incluindo Byte, SByte e os tipos enumerados), Boolean, String,Object

CULng

Tipo de dados ULong (Visual Basic)

Qualquer tipo numérico (incluindo Byte, SByte e os tipos enumerados), Boolean, String,Object

CUShort

Tipo de dados UShort (Visual Basic)

Qualquer tipo numérico (incluindo Byte, SByte e os tipos enumerados), Boolean, String,Object

A função CType

O Função CType (Visual Basic) opera em dois argumentos. A primeira é a expressão a ser convertido, e o segundo é a classe tipo ou objeto de dados de destino. Observe que o primeiro argumento deve ser uma expressão, não um tipo.

CType é uma função in-line, que significa que o código compilado faz a conversão, com frequência sem gerar um chamada de função. Isso melhora o desempenho.

Para uma comparação de CType com as outras conversão de tipos palavras-chave, consulte Operador DirectCast (Visual Basic) e Operador TryCast (Visual Basic).

Tipos elementar

O exemplo a seguir demonstra o uso de CType.

k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)

Tipos Composite

Você pode usar CType para converter valores em tipos de dados compostos bem como para tipos elementares. Também pode usá-lo para forçar uma classe de objeto para o tipo de uma das suas interfaces, como no exemplo a seguir.

' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)

Tipos de matriz

CType também pode converter tipos de dados de matriz, como no exemplo a seguir.

Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
    ' obArray can be converted to classV.
    v = CType(obArray, classV())
End If

Para mais informações e um exemplo, consulte Conversões de matriz (Visual Basic).

Tipos definindo CType

Você pode definir CType em uma classe ou estrutura que você definiu. Isso permite que você para converter valores de e para o tipo de sua classe ou estrutura. Para mais informações e um exemplo, consulte Como definir um operador de conversão (Visual Basic).

Dica

Valores usados com uma palavra-chave conversão deve ser válido para o tipo de dados de destino, ou ocorrerá um erro.Por exemplo, se você tentar converter um Long em um Integer,o valor de Long deve ser dentro do intervalo válido para o tipo de dados Integer.

Aviso

Especificando CType para converter de um tipo de classe para outra falha no tempo de execução se o tipo de origem não é derivado do tipo de destino.Uma falha gera uma exceção InvalidCastException.

No entanto, se um dos tipos for uma classe ou estrutura que você definiu, e se você tiver definido CType nessa classe ou estrutura, uma conversão pode terá êxito se ele satisfaz os requisitos de seu CType. Consulte Como definir um operador de conversão (Visual Basic).

Executar uma conversão explícita é também conhecido como Elenco uma expressão a uma classe tipo ou objeto de dados especificados.

Consulte também

Tarefas

Como converter um objeto em outro tipo no Visual Basic

Solucionando problemas de tipos de dados (Visual Basic)

Referência

Resumo do tipo de dados (Visual Basic)

Funções de conversão do tipo (Visual Basic)

Conceitos

Conversões entre cadeias de caracteres e outros tipos (Visual Basic)

Outros recursos

Conversões de tipo no Visual Basic

Estruturas (Visual Basic)