Você está na página 1de 10

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


Essas funções são compilado embutido, o que significa que o código de conversão faz parte do
código que avalia a expressão. Às vezes, não há nenhuma chamada para um procedimento para
realizar a conversão, o que melhora o desempenho. Cada função impõe uma expressão para um tipo
de dados específico.

Sintaxe
CBool(expression)
CByte(expression)
CChar(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CObj(expression)
CSByte(expression)
CShort(expression)
CSng(expression)
CStr(expression)
CUInt(expression)
CULng(expression)
CUShort(expression)

Parte
expression
Necessário. Qualquer expressão do tipo de dados de origem.

Tipo de dados do valor de retorno


O nome da função determina o tipo de dados do valor retornado por ele, conforme mostrado na
tabela a seguir.

Tipo de
Nome da
dados de Intervalo para expression argumento
função
retorno
Tipo de
CBool Dados Qualquer Char ou String ou expressão numérica.
Boolean
Byte.MinValue (0) por meio Byte.MaxValue (255) (não assinado); são
arredondados para partes fracionárias. 1

CByte Tipo de
Começando com 15,8 do Visual Basic, Visual Basic otimiza o
Dados Byte
desempenho de ponto flutuante para conversão de bytes com o CByte
função; consulte a comentários seção para obter mais informações.
Consulte a CInt exemplo seção para obter um exemplo.
Tipo de
Nome da
dados de Intervalo para expression argumento
função
retorno
Tipo de Qualquer Char ou String expressão; apenas primeiro caractere de um
CChar Dados de
String é convertido; valor pode ser de 0 a 65535 (não assinado).
Caractere
Tipo de
CDate Dados de Qualquer representação válida de uma data e hora.
Data
Tipo de -1, 79769313486231570E + 308 a - 4.94065645841246544-324 para
CDbl Dados valores negativos; 4.94065645841246544-324 1.79769313486231570 +
Duplo 308 para valores positivos.
+ /-79.228.162.514.264.337.593.543.950.335 para números de escala de
Tipo de zero, ou seja, os números sem casas decimais. Para números com 28 casas
CDec Dados decimais, o intervalo é + /-7,9228162514264337593543950335. O menor
Decimal número possível de diferente de zero é
0,0000000000000000000000000001 (+ /-1E-28).
Int32.MinValue (-2.147.483.648) por meio Int32.MaxValue
(2.147.483.647); são arredondados para partes fracionárias. 1
Tipo de
CInt Dados Começando com 15,8 do Visual Basic, Visual Basic otimiza o
Integer desempenho de ponto flutuante para conversão de número inteiro com o
CInt função; consulte a comentários seção para obter mais informações.
Consulte a CInt exemplo seção para obter um exemplo.
Int64.MaxValue (-9.223.372.036.854.775.808) por meio Int64.MaxValue
(9.223.372.036.854.775.807); são arredondados para partes fracionárias. 1
Tipo de
CLng Dados Começando com 15,8 do Visual Basic, Visual Basic otimiza o
Long desempenho de ponto flutuante para conversão de inteiro de 64 bits com o
CLng função; consulte a comentários seção para obter mais informações.
Consulte a CInt exemplo seção para obter um exemplo.
Tipo de
CObj Dados Qualquer expressão válida.
Object
SByte.MinValue (de -128) por meio SByte.MaxValue (127); são
arredondados para partes fracionárias. 1
Tipo de
CSByte Dados Começando com 15,8 do Visual Basic, Visual Basic otimiza o
SByte desempenho de ponto flutuante para conversão de byte assinado com o
CSByte função; consulte a comentários seção para obter mais
informações. Consulte a CInt exemplo seção para obter um exemplo.
Int16.MinValue (-32.768) por meio Int16.MaxValue (32.767); são
arredondados para partes fracionárias. 1
Tipo de
CShort Dados Começando com 15,8 do Visual Basic, Visual Basic otimiza o
Short desempenho de ponto flutuante para conversão de inteiro de 16 bits com o
CShort função; consulte a comentários seção para obter mais
informações. Consulte a CInt exemplo seção para obter um exemplo.
CSng Tipo de -3,402823e+38 - 1,401298E-45 para valores negativos; 1,401298E-45 a
Tipo de
Nome da
dados de Intervalo para expression argumento
função
retorno
Dados
3,402823e+38 para valores positivos.
Simples
Tipo de
Retorna para CStr dependem do expression argumento. Ver valores
CStr Dados
de retorno para a função CStr.
String
UInt32.MinValue (0) por meio UInt32.MaxValue (4.294.967.295) (não
assinado); são arredondados para partes fracionárias. 1
Tipo de
CUInt Dados Começando com 15,8 do Visual Basic, Visual Basic otimiza o
UInteger desempenho de ponto flutuante para conversão de inteiro sem sinal com o
CUInt função; consulte a comentários seção para obter mais
informações. Consulte a CInt exemplo seção para obter um exemplo.
UInt64.MinValue (0) por meio UInt64.MaxValue
(18.446.744.073.709.551.615) (não assinado); são arredondados para
partes fracionárias. 1
Tipo de
CULng Dados
Começando com 15,8 do Visual Basic, Visual Basic otimiza o
ULong
desempenho de ponto flutuante para conversão de inteiro longo sem sinal
com o CULng função; consulte a comentários seção para obter mais
informações. Consulte a CInt exemplo seção para obter um exemplo.
UInt16.MinValue (0) por meio UInt16.MaxValue (65.535) (não assinado);
são arredondados para partes fracionárias. 1
Tipo de
CUShort Dados Começando com 15,8 do Visual Basic, Visual Basic otimiza o
UShort desempenho de ponto flutuante para conversão de inteiro sem sinal de 16
bits com o CUShort função; consulte a comentários seção para obter
mais informações. Consulte a CInt exemplo seção para obter um exemplo.
1 partes fracionárias podem estar sujeitos a um tipo especial de chamado de arredondamento

arredondamento bancário. Consulte "Comentários" para obter mais informações.

Comentários
Como regra, você deve usar as funções de conversão de tipo de Visual Basic em preferência as
métodos do .NET Framework, como ToString(), seja no Convert classe ou em uma classe ou
estrutura de tipo individual. Funções do Visual Basic são projetadas para interação ideal com o
código do Visual Basic, e elas também tornam o código-fonte mais curto e fácil de ler. Além disso,
os métodos de conversão do .NET Framework nem sempre produzem os mesmos resultados que as
funções do Visual Basic, por exemplo, ao converter Boolean para Integer. Para obter mais
informações, consulte solução de problemas de tipos de dados.
Começando com o Visual Basic 15,8, o desempenho da conversão flutuante-ponto para inteiro é
otimizado quando você passa o Single ou Double valor retornado por métodos a seguir com uma
das funções de conversão de número inteiro (CByte, CShort, CInt, CLng, CSByte, CUShort,
CUInt, CULng):

 Conversion.Fix(Double)
 Conversion.Fix(Object)
 Conversion.Fix(Single)
 Conversion.Int(Double)
 Conversion.Int(Object)
 Conversion.Int(Single)
 Math.Ceiling(Double)
 Math.Floor(Double)
 Math.Round(Double)
 Math.Truncate(Double)
Essa otimização permite que o código que faz um grande número de conversões de inteiro para ser
executado até duas vezes mais rápido. O exemplo a seguir ilustra essas conversões flutuante-ponto-
a-inteiro otimizadas:
VB
Dim s As Single = 173.7619
Dim d As Double = s

Dim i1 As Integer = CInt(Fix(s)) ' Result: 173


Dim b1 As Byte = CByte(Int(d)) ' Result: 173
Dim s1 AS Short = CShort(Math.Truncate(s)) ' Result: 173
Dim i2 As Integer = CInt(Math.Ceiling(d)) ' Result: 174
Dim i3 As Integer = CInt(Math.Round(s)) ' Result: 174

Comportamento
 Coerção. Em geral, você pode usar as funções de conversão de tipo de dados para forçar o
resultado de uma operação para um determinado tipo de dados em vez de um tipo de dados
padrão. Por exemplo, use CDec para forçar a aritmética decimal em casos onde precisão
simples, precisão dupla ou aritmética de inteiros normalmente aconteceria.
 Conversões com falha. Se o expression passado para a função está fora do intervalo do
tipo de dados para o qual ele deve ser convertido, um OverflowException ocorre.
 Partes fracionárias. Quando você converter um valor não integral para integral tipo, as
funções de conversão de número inteiro (CByte, CInt, CLng, CSByte, CShort,
CUInt, CULng, e CUShort) remover o fracionários parte e arredondar o valor para o
inteiro mais próximo.
Se a parte fracionária é exatamente 0,5, as funções de conversão de número inteiro de ida e
volta para o inteiro par mais próximo. Por exemplo, 0,5 é arredondado para 0 e 1.5 e 2.5 que
sejam arredondados para 2. Isso às vezes é chamado arredondamento bancário, e sua
finalidade é compensar uma tendência que poderia criar acúmulos ao somar muitos esses
números.
CInt e CLng difere de Int e Fix funções, que truncam, ao invés de ida e volta, a parte
fracionária de um número. Além disso, Fix e Int sempre retornam um valor do mesmo
tipo de dados conforme você passa no.
 Conversões de data/hora. Use o IsDate função para determinar se um valor pode ser
convertido em uma data e hora. CDate reconhece os literais de data e hora literais, mas
valores não numéricos. Para converter um Visual Basic 6.0 Date de valor para um Date
valor no Visual Basic 2005 ou versões posteriores, você pode usar o DateTime.FromOADate
método.
 Neutro valores de data/hora. O tipo de dados Date sempre contém informações de data e
hora. Para fins de conversão de tipo, o Visual Basic considera 1/1/0001 (1 de janeiro do ano
1) como um valor neutro para a data e 00:00:00 (meia-noite) ser um valor neutro para a
hora. Se você converter um Date valor em uma cadeia de caracteres CStr não inclui
valores neutros na cadeia de caracteres resultante. Por exemplo, se você converter
#January 1, 0001 9:30:00# como uma cadeia de caracteres, o resultado será
"9:30:00 AM"; as informações de data são suprimidas. No entanto, as informações de data
ainda estão presentes no original Date de valor e pode ser recuperada com funções como
DatePart função.
 Diferenciação de cultura. As funções de conversão de tipo envolvendo cadeias de
caracteres executam conversões com base nas configurações de cultura atual para o
aplicativo. Por exemplo, CDate reconhece os formatos de data de acordo com a
configuração de localidade do seu sistema. Você deve fornecer o dia, mês e ano na ordem
correta para sua localidade ou a data não pode ser interpretada corretamente. Um formato de
data por extenso não é reconhecido se ele contiver uma cadeia de caracteres de dia da
semana, como "Quarta-feira".
Se você precisar converter de ou para uma representação de cadeia de caracteres de um valor
em um formato diferente daquele especificado pela sua localidade, será possível usar as
funções de conversão de tipo de Visual Basic. Para fazer isso, use o
ToString(IFormatProvider) e Parse(String, IFormatProvider)
métodos de tipo desse valor. Por exemplo, use Double.Parse ao converter uma cadeia de
caracteres para um Doublee use Double.ToString ao converter um valor do tipo Double
para uma cadeia de caracteres.

Função CType
O função CType leva um segundo argumento, typenamee impõe expression para typename,
onde typename pode ser qualquer tipo de dados, estrutura, classe ou interface para o qual existe
uma conversão válida.
Para obter uma comparação CType com o outro tipo conversão palavras-chave, consulte operador
DirectCast e operador TryCast.

Exemplo de CBool
O exemplo a seguir usa o CBool função para converter expressões para Boolean valores. Se uma
expressão é avaliada como um valor diferente de zero, CBool retorna True; caso contrário, ele
retorna False.

VB
Dim a, b, c As Integer
Dim check As Boolean
a = 5
b = 5
' The following line of code sets check to True.
check = CBool(a = b)
c = 0
' The following line of code sets check to False.
check = CBool(c)

Exemplo de CByte
O exemplo a seguir usa o CByte função para converter uma expressão para um Byte.

VB
Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)

Exemplo de CChar
O exemplo a seguir usa o CChar função para converter o primeiro caractere de um String
expressão para um Char tipo.

VB
Dim aString As String
Dim aChar As Char
' CChar converts only the first character of the string.
aString = "BCD"
' The following line of code sets aChar to "B".
aChar = CChar(aString)

O argumento de entrada para CChar deve ser do tipo de dados Char ou String. Não é possível
usar CChar para converter um número em um caractere, porque CChar não pode aceitar o tipo de
dados numéricos. O exemplo a seguir obtém um número que representa um ponto de código
(código de caractere) e o converte em caractere correspondente. Ele usa o InputBox função para
obter a cadeia de caracteres de dígitos, CInt para converter a cadeia de caracteres para o tipo
Integer, e ChrW converter o número para o tipo Char.

VB
Dim someDigits As String
Dim codePoint As Integer
Dim thisChar As Char
someDigits = InputBox("Enter code point of character:")
codePoint = CInt(someDigits)
' The following line of code sets thisChar to the Char value of codePoint.
thisChar = ChrW(codePoint)
Exemplo de CDate
O exemplo a seguir usa o CDate função para converter cadeias de caracteres para Date valores.
Em geral, embutir datas e horas como cadeias de caracteres (como mostrado neste exemplo) não é
recomendável. Use literais de data e hora literais, como #Feb 12, 1969 # e # 4:45:23 PM #, em vez
disso.
VB
Dim aDateString, aTimeString As String
Dim aDate, aTime As Date
aDateString = "February 12, 1969"
aTimeString = "4:35:47 PM"
' The following line of code sets aDate to a Date value.
aDate = CDate(aDateString)
' The following line of code sets aTime to Date value.
aTime = CDate(aTimeString)

Exemplo de CDbl
VB
Dim aDec As Decimal
Dim aDbl As Double
' The following line of code uses the literal type character D to make aDec a
Decimal.
aDec = 234.456784D
' The following line of code sets aDbl to 1.9225456288E+1.
aDbl = CDbl(aDec * 8.2D * 0.01D)

Exemplo de CDec
O exemplo a seguir usa o CDec função para converter um valor numérico para Decimal.

VB
Dim aDouble As Double
Dim aDecimal As Decimal
aDouble = 10000000.0587
' The following line of code sets aDecimal to 10000000.0587.
aDecimal = CDec(aDouble)

Exemplo de CInt
O exemplo a seguir usa o CInt função para converter um valor de Integer.

VB
Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)
Exemplo de CLng
O exemplo a seguir usa o CLng função para converter valores para Long.

VB
Dim aDbl1, aDbl2 As Double
Dim aLng1, aLng2 As Long
aDbl1 = 25427.45
aDbl2 = 25427.55
' The following line of code sets aLng1 to 25427.
aLng1 = CLng(aDbl1)
' The following line of code sets aLng2 to 25428.
aLng2 = CLng(aDbl2)

Exemplo de CObj
O exemplo a seguir usa o CObj função para converter um valor numérico para Object. O
Object própria variável contém apenas um ponteiro de quatro bytes, que aponta para o Double
valor atribuído a ele.
VB
Dim aDouble As Double
Dim anObject As Object
aDouble = 2.7182818284
' The following line of code sets anObject to a pointer to aDouble.
anObject = CObj(aDouble)

Exemplo de CSByte
O exemplo a seguir usa o CSByte função para converter um valor numérico para SByte.

VB
Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)

Exemplo de CShort
O exemplo a seguir usa o CShort função para converter um valor numérico para Short.

VB
Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)

Exemplo de CSng
O exemplo a seguir usa o CSng função para converter valores para Single.
VB
Dim aDouble1, aDouble2 As Double
Dim aSingle1, aSingle2 As Single
aDouble1 = 75.3421105
aDouble2 = 75.3421567
' The following line of code sets aSingle1 to 75.34211.
aSingle1 = CSng(aDouble1)
' The following line of code sets aSingle2 to 75.34216.
aSingle2 = CSng(aDouble2)

Exemplo de CStr
O exemplo a seguir usa o CStr função para converter um valor numérico para String.

VB
Dim aDouble As Double
Dim aString As String
aDouble = 437.324
' The following line of code sets aString to "437.324".
aString = CStr(aDouble)

O exemplo a seguir usa o CStr função para converter Date valores String valores.

VB
Dim aDate As Date
Dim aString As String
' The following line of code generates a COMPILER ERROR because of invalid
format.
' aDate = #February 12, 1969 00:00:00#
' Date literals must be in the format #m/d/yyyy# or they are invalid.
' The following line of code sets the time component of aDate to midnight.
aDate = #2/12/1969#
' The following conversion suppresses the neutral time value of 00:00:00.
' The following line of code sets aString to "2/12/1969".
aString = CStr(aDate)
' The following line of code sets the time component of aDate to one second past
midnight.
aDate = #2/12/1969 12:00:01 AM#
' The time component becomes part of the converted value.
' The following line of code sets aString to "2/12/1969 12:00:01 AM".
aString = CStr(aDate)

CStr sempre renderiza um Date valor no formato padrão curto para a localidade atual, por
exemplo, "6/15/2003 4:35:47 PM". No entanto, CStr suprime a valores neutros de 1/1/0001 para a
data e 00:00:00 para a hora.
Para obter mais detalhes sobre os valores retornados pelo CStr, consulte retornar valores para a
função CStr.

Exemplo de CUInt
O exemplo a seguir usa o CUInt função para converter um valor numérico para UInteger.

VB
Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)

Exemplo de CULng
O exemplo a seguir usa o CULng função para converter um valor numérico para ULong.

VB
Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)

Exemplo de CUShort
O exemplo a seguir usa o CUShort função para converter um valor numérico para UShort.

VB
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)