Tipo de datos ULong (Visual Basic)
Contiene enteros de 64 bits (8 bytes) sin signo cuyo valor oscila entre 0 y 18 446 744 073 709 551 615 (más de 1,84 veces 10 ^ 19).
Comentarios
Use el tipo de datos ULong
para contener datos binarios demasiado grandes para UInteger
o los valores enteros sin signo más grandes posibles.
El valor predeterminado de ULong
es 0.
Asignaciones de literales
Puede declarar e inicializar una variable ULong
si la asigna a un literal decimal, un literal hexadecimal, un literal octal o (a partir de Visual Basic 2017) un literal binario. Si el literal entero está fuera del intervalo de ULong
(es decir, si es inferior a UInt64.MinValue o mayor que UInt64.MaxValue, se produce un error de compilación.
En el ejemplo siguiente, los enteros que equivalen a 7 934 076 125 que se representan como literales binarios, hexadecimales y decimales se asignan a valores ULong
.
Dim ulongValue1 As ULong = 7934076125
Console.WriteLine(ulongValue1)
Dim ulongValue2 As ULong = &H0001D8e864DD
Console.WriteLine(ulongValue2)
Dim ulongValue3 As ULong = &B0001_1101_1000_1110_1000_0110_0100_1101_1101
Console.WriteLine(ulongValue3)
' The example displays the following output:
' 7934076125
' 7934076125
' 7934076125
Nota
Use el prefijo &h
o &H
para denotar un literal hexadecimal, el prefijo &b
o &B
para denotar un literal binario y el prefijo &o
o &O
para denotar un literal octal. Los literales decimales no tienen prefijo.
A partir de Visual Basic 2017, también puede usar el carácter de subrayado, _
, como un separador de dígitos para mejorar la legibilidad, tal como se muestra en el ejemplo siguiente.
Dim longValue1 As Long = 4_294_967_296
Console.WriteLine(longValue1)
Dim longValue2 As Long = &H1_0000_0000
Console.WriteLine(longValue2)
Dim longValue3 As Long = &B1_0000_0000_0000_0000_0000_0000_0000_0000
Console.WriteLine(longValue3)
' The example displays the following output:
' 4294967296
' 4294967296
' 4294967296
A partir de Visual Basic 15.5 también puede usar el carácter de subrayado (_
) como separador inicial entre el prefijo y los dígitos hexadecimales, binarios u octales. Por ejemplo:
Dim number As ULong = &H_F9AC_0326_1489_D68C
Para usar el carácter de subrayado como separador inicial, debe agregar el elemento siguiente al archivo del proyecto de Visual Basic (*.vbproj):
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Para más información, consulte Selección de la versión del lenguaje de Visual Basic.
Los literales numéricos también pueden incluir el carácter de tipo UL
o ul
para denotar el tipo de datos ULong
, como se muestra en el ejemplo siguiente.
Dim number = &H_00_00_0A_96_2F_AC_14_D7ul
sugerencias de programación
Números negativos. Dado que
ULong
es un tipo sin signo, no puede representar un número negativo. Si usa el operador unario menos (-
) en una expresión que se evalúa como tipoULong
, Visual Basic convierte primero la expresión enDecimal
.Conformidad con CLS. El tipo de datos
ULong
no forma parte de Common Language Specification (CLS), por lo que el código conforme a CLS no puede consumir un componente que lo utilice.Consideraciones de interoperabilidad. Si interactúa con componentes no escritos para .NET Framework, por ejemplo, objetos de Automation o COM, recuerde que tipos como
ulong
pueden tener un ancho de datos diferente (32 bits) en otros entornos. Si pasa un argumento de 32 bits a ese tipo de componente, declárelo comoUInteger
en lugar deULong
en el código de Visual Basic administrado.Ampliación. El tipo de datos
ULong
se amplía aDecimal
,Single
yDouble
. Esto significa que puede convertirULong
en cualquiera de estos tipos sin que se produzca un error System.OverflowException.Caracteres de tipo. Al agregar el carácter de tipo literal
UL
a un literal, se convierte forzosamente al tipo de datosULong
.ULong
no tiene ningún carácter de tipo identificador.Tipo de Framework. El tipo correspondiente en .NET Framework es la estructura System.UInt64.