Funções de conversão de tipo (Visual Basic)
These functions are compiled inline, meaning the conversion code is part of the code that evaluates the expression.Sometimes there is no call to a procedure to accomplish the conversion, which improves performance.Each function coerces an expression to a specific data type.
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
Obrigatório.Any expression of the source data type.
Return Value Data Type
The function name determines the data type of the value it returns, as shown in the following table.
Nome da função |
Tipo de dado retonado |
Intervalo para expression argumento |
---|---|---|
CBool |
Qualquer Char ou String ou expressão numérica. |
|
CByte |
0 through 255 (unsigned); fractional parts are rounded.1 |
|
CChar |
Qualquer Char ou String expressão; somente primeiro caractere de um String é convertida; valor pode ser 0 65535 até (sem sinal). |
|
CDate |
Any valid representation of a date and time. |
|
CDbl |
-1.79769313486231570E+308 through -4.94065645841246544E-324 for negative values; 4.94065645841246544E-324 through 1.79769313486231570E+308 for positive values. |
|
CDec |
+/-79,228,162,514,264,337,593,543,950,335 for zero-scaled numbers, that is, numbers with no decimal places.For numbers with 28 decimal places, the range is +/-7.9228162514264337593543950335.The smallest possible non-zero number is 0.0000000000000000000000000001 (+/-1E-28). |
|
CInt |
-2,147,483,648 through 2,147,483,647; fractional parts are rounded.1 |
|
CLng |
-9,223,372,036,854,775,808 through 9,223,372,036,854,775,807; fractional parts are rounded.1 |
|
CObj |
Qualquer expressão válida. |
|
CSByte |
-128 through 127; fractional parts are rounded.1 |
|
CShort |
-32,768 through 32,767; fractional parts are rounded.1 |
|
CSng |
-3.402823E+38 through -1.401298E-45 for negative values; 1.401298E-45 through 3.402823E+38 for positive values. |
|
CStr |
Retorna para CStr dependem do expression argumento.Consulte Valores de retorno para a função CStr (Visual Basic). |
|
CUInt |
0 through 4,294,967,295 (unsigned); fractional parts are rounded.1 |
|
CULng |
0 through 18,446,744,073,709,551,615 (unsigned); fractional parts are rounded.1 |
|
CUShort |
0 through 65,535 (unsigned); fractional parts are rounded.1 |
1 Fractional parts can be subject to a special type of rounding called banker's rounding.See "Remarks" for more information.
Comentários
Como regra, você deve usar as funções de conversão de tipo de Visual Basic em preferência à.Métodos de NET Framework, como ToString(), ambos na Convert classe ou em uma classe ou estrutura tipo individuais.The Visual Basic functions are designed for optimal interaction with Visual Basic code, and they also make your source code shorter and easier to read.Além disso, o.Métodos de conversão do NET Framework não produzir os mesmos resultados que as funções Visual Basic, por exemplo, ao converter sempre Boolean para Integer.Para obter mais informações, consulte Solucionando problemas de tipos de dados (Visual Basic).
Comportamento
Coercion. In general, you can use the data type conversion functions to coerce the result of an operation to a particular data type rather than the default data type.Por exemplo, use CDec para forçar aritmética decimal em casos onde precisão simples, precisão dupla ou aritmética inteira normalmente demoraria local.
Failed Conversions. Se a expression passado para a função está fora do intervalo do tipo de dados para a qual ele será convertido, um OverflowException ocorre.
Fractional Parts. Quando você converte um valor de nonintegral para uma integral digitar, as funções de conversão de inteiro (CByte, CInt, CLng, CSByte, CShort, CUInt, CULng, e CUShort) removem a parte fracionária e arredondar o valor para o inteiro mais próximo.
If the fractional part is exactly 0.5, the integer conversion functions round it to the nearest even integer.Por exemplo, 0,5 é arredondado para 0 e 1.5 e 2.5 que sejam arredondados para 2.Isso às vezes é chamado o arredondamento bancário, e sua finalidade é compensar uma inclinação que pode acumular ao adicionar muitos esses números juntos.
CInte CLng diferir do Int e Fix funções, que truncar, ao invés de arredondar, a parte fracionária de um número.Além disso, Fix e Int sempre retornam um valor do mesmo tipo de dados que você passe no.
Date/Time Conversions. Use o IsDate função para determinar se um valor pode ser convertido para uma data e hora.CDatereconhece literais de data e literais de hora, mas valores não numéricos.Para converter um 6.0 Visual Basic Date valor para um Date valor no Visual Basic 2005 ou versões posteriores, você pode usar o DateTime.FromOADate método.
Neutral Date/Time Values. O Tipo de dados Date (Visual Basic) sempre contém informações sobre a data e a hora.For purposes of type conversion, Visual Basic considers 1/1/0001 (January 1 of the year 1) to be a neutral value for the date, and 00:00:00 (midnight) to be a neutral value for the time.Se você converter um Date valor para uma seqüência de caracteres, CStr não inclui neutros valores na seqüência de caracteres resultante.For example, if you convert #January 1, 0001 9:30:00# to a string, the result is "9:30:00 AM"; the date information is suppressed.No entanto, as informações de data ainda estão presentes no original Date de valor e podem ser recuperados com funções como DatePart função.
Culture Sensitivity. The type conversion functions involving strings perform conversions based on the current culture settings for the application.Por exemplo, CDate reconhece formatos de data de acordo com a configuração de localidade do sistema.You must provide the day, month, and year in the correct order for your locale, or the date might not be interpreted correctly.A long date format is not recognized if it contains a day-of-the-week string, such as "Wednesday".
If you need to convert to or from a string representation of a value in a format other than the one specified by your locale, you cannot use the Visual Basic type conversion functions.To do this, use the ToString(IFormatProvider) and Parse(String, IFormatProvider) methods of that value's type.Por exemplo, use Double.Parse ao converter uma seqüência de caracteres para um Doublee usar Double.ToString ao converter um valor do tipo Double para uma seqüência de caracteres.
CType Function
O Função CType usa um segundo argumento, typenamee o converte no 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 uma comparação de CType com as outras conversão de tipos palavras-chave, consulte Operador de DirectCast (Visual Basic) e Operador de TryCast (Visual Basic).
CBool Example
O exemplo a seguir usa a CBool função para converter expressões para Boolean valores.Se uma expressão for avaliada como um valor diferente de zero, CBool retorna True; Caso contrário, ele retornará False.
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)
CByte Example
O exemplo a seguir usa a CByte função para converter uma expressão para um Byte.
Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)
CChar Example
O exemplo a seguir usa a CChar função para converter o primeiro caractere de um String a expressão para um Char tipo.
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 para um caractere, como CChar não pode aceitar o tipo de dados numéricos.The following example obtains a number representing a code point (character code) and converts it to the corresponding character.Ele usa o InputBox a função para obter a seqüência de dígitos, CInt para converter a seqüência de caracteres para digitar Integer, e ChrW para converter o número para digitar Char.
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)
CDate Example
O exemplo a seguir usa a CDate função para converter seqüências de caracteres para Date valores.In general, hard-coding dates and times as strings (as shown in this example) is not recommended.Use date literals and time literals, such as #Feb 12, 1969# and #4:45:23 PM#, instead.
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)
CDbl Example
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)
CDec Example
O exemplo a seguir usa a CDec função para converter um valor numérico para Decimal.
Dim aDouble As Double
Dim aDecimal As Decimal
aDouble = 10000000.0587
' The following line of code sets aDecimal to 10000000.0587.
aDecimal = CDec(aDouble)
CInt Example
O exemplo a seguir usa a CInt função para converter um valor para Integer.
Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)
CLng Example
O exemplo a seguir usa a CLng função para converter valores de Long.
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)
CObj Example
O exemplo a seguir usa a 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.
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)
CSByte Example
O exemplo a seguir usa a CSByte função para converter um valor numérico para SByte.
Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)
CShort Example
O exemplo a seguir usa a CShort função para converter um valor numérico para Short.
Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)
CSng Example
O exemplo a seguir usa a CSng função para converter valores de Single.
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)
CStr Example
O exemplo a seguir usa a CStr função para converter um valor numérico para String.
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 a CStr função para converter Date valores a String valores.
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)
CStrsempre renderiza uma Date o valor no formato curto padrão para a localidade atual, por exemplo, "15/6/2003 4: 35: 47 PM".No entanto, CStr suprime a valores neutras de 1/1/0001 para a data e a 00: 00: 00 para o tempo.
Para obter mais detalhes sobre os valores retornados por CStr, consulte Valores de retorno para a função CStr (Visual Basic).
CUInt Example
O exemplo a seguir usa a CUInt função para converter um valor numérico para UInteger.
Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)
CULng Example
O exemplo a seguir usa a CULng função para converter um valor numérico para ULong.
Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)
CUShort Example
O exemplo a seguir usa a CUShort função para converter um valor numérico para UShort.
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)
Consulte também
Referência
Funções de conversão (Visual Basic)