Esta documentación está archivada y no tiene mantenimiento.

Funciones de conversión de tipos

Estas funciones se compilan en línea, es decir, el código de conversión forma parte del código que evalúa la expresión. A veces no se produce una llamada a un procedimiento para realizar la conversión, lo que mejora el rendimiento. Cada función convierte una expresión a un tipo de datos específico.


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)

expression

Obligatoria. Cualquier expresión del tipo de datos de origen.

El nombre de función determina el tipo de datos del valor devuelto, como se muestra en la tabla siguiente.

Nombre de la función Tipo de datos devuelto Intervalo de valores del argumento expression

CBool

Boolean (Tipo de datos, Visual Basic)

Cualquier expresión numérica, Char o String válida.

CByte

Byte (Tipo de datos, Visual Basic)

0 a 255 (sin signo); las partes fraccionarias se redondean.1

CChar

Char (Tipo de datos, Visual Basic)

Cualquier expresión Char o String válida; sólo se convierte el primer carácter de String; el valor puede estar comprendido entre 0 y 65535 (sin signo).

CDate

Date (Tipo de datos, Visual Basic)

Cualquier representación válida de fecha y hora.

CDbl

Double (Tipo de datos, Visual Basic)

de -1,79769313486231570E+308 a -4,94065645841246544E-324 para valores negativos; de 4,94065645841246544E-324 a 1,79769313486231570E+308 para valores positivos.

CDec

Decimal (Tipo de datos, Visual Basic)

+/-79.228.162.514.264.337.593.543.950.335 para números a partir de cero, es decir, números sin decimales. Para números con 28 posiciones decimales, el intervalo es 
+/-7,9228162514264337593543950335. El menor número posible distinto de cero es 0,0000000000000000000000000001 (+/-1E-28).

CInt

Integer (Tipo de datos, Visual Basic)

de -2.147.483.648 a 2.147.483.647; las partes fraccionarias se redondean.1

CLng

Long (Tipo de datos, Visual Basic)

de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807; las partes fraccionarias se redondean.1

CObj

Object (Tipo de datos)

Cualquier expresión válida.

CSByte

SByte (Tipo de datos, Visual Basic)

de -128 a 127; las partes fraccionarias se redondean.1

CShort

Short (Tipo de datos, Visual Basic)

de -32.768 a 32.767; las partes fraccionarias se redondean.1

CSng

String (Tipo de datos, Visual Basic)

De -3,402823E+38 a –1,401298E-45 para valores negativos; de 1,401298E-45 a 3,402823E+38 para valores positivos.

CStr

String (Tipo de datos, Visual Basic)

Los valores devueltos para CStr dependen del argumento expression. Vea Valores devueltos para la función CStr.

CUInt

UInteger (Tipo de datos)

de 0 a 4.294.967.295 (sin signo); las partes fraccionarias se redondean.1

CULng

ULong (Tipo de datos, Visual Basic)

de 0 a 18.446.744.073.709.551.615 (sin signo); las partes fraccionarias se redondean.1

CUShort

UShort (Tipo de datos, Visual Basic)

de 0 a 65.535 (sin signo); las partes fraccionarias se redondean.1

1 Las partes fraccionarias pueden estar sujetas a un tipo especial de redondeo denominado redondeo bancario. Vea "Comentarios" para obtener más información.

Por regla general, debe utilizar preferentemente las funciones de conversión de tipos de Visual Basic que los métodos de .NET Framework, como ToString(), en la clase Convert o en una clase o estructura individual de tipos. Las funciones de Visual Basic se han diseñado para que interactúen de forma óptima con el código de Visual Basic; además hacen que el código fuente sea más corto y fácil de leer. Asimismo, los métodos de conversión de .NET Framework no siempre producen los mismos resultados que las funciones de Visual Basic, por ejemplo cuando se convierte de Boolean a Integer. Para obtener más información, vea Solucionar problemas de tipos de datos.

Comportamiento

  • Conversión. En general, puede utilizar las funciones de conversión de tipos de datos para convertir el resultado de una operación a un tipo de datos concreto en vez de al tipo de datos predeterminado. Por ejemplo, utilice CDec para forzar la ejecución de operaciones con aritmética decimal en los casos en los que se haría con precisión simple, doble precisión o aritmética de enteros.

  • Conversiones incorrectas. Si el argumento expression transferido a la función está fuera del intervalo de valores del tipo de datos al que se va a convertir, se inicia una excepción OverflowException.

  • Partes fraccionarias. Cuando un valor no integral se convierte a un tipo integral, las funciones de conversión de enteros (CByte, CInt, CLng, CSByte, CShort, CUInt, CULng y CUShort) eliminan la parte fraccionaria y redondean el valor al entero más próximo.

    Si la parte fraccionaria es exactamente 0,5, las funciones de conversión de enteros lo rodean al entero par más próximo. Por ejemplo, 0,5 se redondea a 0, y 1,5 y 2,5 se redondean a 2. En ocasiones, esto se denomina redondeo bancario, y su finalidad es compensar el margen de error que se pudiera acumular al sumar muchos números de este tipo.

    CInt y CLng difieren de Int, Fix (Funciones, Visual Basic), que, en lugar de redondear, trunca la parte fraccionaria de un número. Además, Fix e Int siempre devuelven un valor del mismo tipo de datos que reciben.

  • Conversiones de fecha y hora. Utilice IsDate (Función, Visual Basic) para determinar si un valor se puede convertir a una fecha y hora. CDate reconoce literales de fecha y de hora, pero no valores numéricos. Para convertir un valor Date de Visual Basic 6.0 en un valor Date de Visual Basic 2005, puede utilizar el método System.DateTime.FromOADate(System.Double).

  • Valores de fecha u hora neutrales. El tipo de datos Date (Tipo de datos, Visual Basic) contiene siempre información de fecha y hora. Para la conversión de tipos, Visual Basic considera 1/1/0001 (1 de enero del año 1) un valor neutral de fecha y 00:00:00 (medianoche) un valor neutral de hora. Si se convierte un valor Date a una cadena, CStr no incluye valores neutrales en la cadena resultante. Por ejemplo, si se convierte #January 1, 0001 9:30:00# en una cadena, el resultado sería "9:30:00 a.m.", ya que la información de fecha se omite. No obstante, la información de fecha sigue estando presente en el valor Date original y se puede recuperar mediante funciones como DatePart (Función, Visual Basic).

  • Distinción de referencias culturales. Las funciones de conversión de tipos que implican cadenas realizan las conversiones en función de la configuración de la referencia cultural actual de la aplicación. Por ejemplo, CDate reconoce formatos de fecha de acuerdo con la configuración regional del sistema. Debe suministrar el día, mes y año en el orden correcto para la configuración regional; de no hacerlo así, es posible que la fecha no se interprete de forma correcta. No se puede reconocer un formato de fecha largo si contiene la cadena del día de la semana, por ejemplo “Miércoles”.

    Si necesita convertir una representación de cadena de un valor en un formato diferente al especificado por la configuración regional, no puede utilizar las funciones de conversión de tipos de Visual Basic. Para ello, utilice los métodos ToString(IFormatProvider) y Parse(String, IFormatProvider) de ese tipo de valor. Por ejemplo, utilice System.Double.Parse(System.String,System.IFormatProvider) cuando convierte una cadena a un valor de tipo Double y utilice System.Double.ToString(System.IFormatProvider) cuando convierta un valor de tipo Double en una cadena.

CType (Función)

La función CType toma un segundo argumento, typename, y convierte expression en typename, donde typename puede ser cualquier tipo de datos, estructura, clase o interfaz para la que exista una conversión válida.

Para una comparación de CType con otras palabras clave de conversión de tipos, vea DirectCast y TryCast.

Ejemplo de la función CBool

En este ejemplo se utiliza la función CBool para convertir expresiones en valores Boolean. Si una expresión se evalúa en un valor distinto de cero, CBool devuelve True; en caso contrario, devuelve 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)

Ejemplo de la función CByte

En este ejemplo se utiliza la función CByte para convertir expresiones en Byte.

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

Ejemplo de la función CChar

En el ejemplo siguiente se utiliza la función CChar para convertir el primer carácter de una expresión String en un tipo Char.

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)

El argumento de entrada para CChar debe pertenecer al tipo de datos Char o String. No puede utilizar CChar para convertir un número en un carácter, porque CChar no acepta un tipo de datos numéricos. En el ejemplo siguiente se obtiene un número que representa un punto de código (código de carácter) y se convierte al carácter correspondiente. En el ejemplo se utiliza InputBox (Función, Visual Basic) para obtener la cadena de dígitos, CInt para convertir la cadena en el tipo Integer y ChrW para convertir el número en el tipo 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)

Ejemplo de la función CDate

En este ejemplo se utiliza la función CDate para convertir cadenas en valores Date. En general, no se recomienda especificar las fechas y horas como cadenas en el código, tal y como se puede ver en este ejemplo. Utilice literales de fecha y hora, por ejemplo #Feb 12, 1969# y #4:45:233 p.m.#.

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)

Ejemplo de la función CDbl

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)

Ejemplo de la función CDec

En el siguiente ejemplo se utiliza la función CDec para convertir un valor numérico en 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)

Ejemplo de la función CInt

En este ejemplo se utiliza la función CInt para convertir un valor a Integer.

Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)

Ejemplo de la función CLng

En el ejemplo siguiente se utiliza la función CLng para convertir valores a 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)

Ejemplo de la función CObj

En el siguiente ejemplo se utiliza la función CObj para convertir un valor numérico en Object. La variable Object en sí contiene sólo un puntero de cuatro bytes, que señala al valor Double que tiene asignado.

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)

Ejemplo de CSByte

En el siguiente ejemplo se utiliza la función CSByte para convertir un valor numérico en SByte.

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

Ejemplo de la función CShort

En el siguiente ejemplo se utiliza la función CShort para convertir un valor numérico en Short.

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

Ejemplo de la función CSng

En el ejemplo siguiente se utiliza la función CSng para convertir valores a 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)

Ejemplo de la función CStr

En el siguiente ejemplo se utiliza la función CStr para convertir un valor numérico en 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)

En el ejemplo siguiente se utiliza la función CStr para convertir valores Date en valores String.

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 siempre representa un valor Date en el formato corto estándar de la configuración regional actual, por ejemplo, "15/6/2003 4:35:47 p.m.". Sin embargo, CStr suprime los valores neutrales 1/1/0001 para la fecha y 00:00:00 para la hora.

Para obtener información detallada sobre los valores devueltos por CStr, vea Valores devueltos para la función CStr.

Ejemplo de CUInt

En el siguiente ejemplo se utiliza la función CUInt para convertir un valor numérico en UInteger.

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

Ejemplo de CULng

En el siguiente ejemplo se utiliza la función CULng para convertir un valor numérico en ULong.

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

Ejemplo de CUShort

En el siguiente ejemplo se utiliza la función CUShort para convertir un valor numérico en UShort.

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

Mostrar: