Compartir a través de


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 tipo ULong, Visual Basic convierte primero la expresión en Decimal.

  • 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 como UInteger en lugar de ULong en el código de Visual Basic administrado.

  • Ampliación. El tipo de datos ULong se amplía a Decimal, Single y Double. Esto significa que puede convertir ULong 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 datos ULong. ULong no tiene ningún carácter de tipo identificador.

  • Tipo de Framework. El tipo correspondiente en .NET Framework es la estructura System.UInt64.

Consulte también