UInteger (tipo de datos)

Contiene enteros de 32 bits (4 bytes) sin signo cuyo valor oscila entre 0 y 4 294 967 295.

Comentarios

El tipo de datos UInteger proporciona el mayor valor sin signo en el ancho de datos más eficaz.

El valor predeterminado de UInteger es 0.

Asignaciones de literales

Puede declarar e inicializar una variable UInteger 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 UInteger (es decir, si es inferior a UInt32.MinValue o mayor que UInt32.MaxValue, se produce un error de compilación.

En el ejemplo siguiente, los enteros que equivalen a 3 000 000 000 que se representan como literales binarios, hexadecimales y decimales se asignan a valores UInteger.

Dim uintValue1 As UInteger = 3000000000ui
Console.WriteLine(uintValue1)

Dim uintValue2 As UInteger = &HB2D05E00ui
Console.WriteLine(uintValue2)

Dim uintValue3 As UInteger = &B1011_0010_1101_0000_0101_1110_0000_0000ui
Console.WriteLine(uintValue3)
' The example displays the following output:
'          3000000000
'          3000000000
'          3000000000

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 uintValue1 As UInteger = 3_000_000_000ui
Console.WriteLine(uintValue1)

Dim uintValue2 As UInteger = &HB2D0_5E00ui
Console.WriteLine(uintValue2)

Dim uintValue3 As UInteger = &B1011_0010_1101_0000_0101_1110_0000_0000ui
Console.WriteLine(uintValue3)
' The example displays the following output:
'          3000000000
'          3000000000
'          3000000000

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 UInteger = &H_0F8C_0326

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 tipoUI o ui para denotar el tipo de datos UInteger, como se muestra en el ejemplo siguiente.

Dim number = &H_0FAC_14D7ui

sugerencias de programación

Los tipos de datos UInteger y Integer proporciona un rendimiento óptimo en un procesador de 32 bits, porque los tipos de entero más pequeños (UShort, Short, Byte y SByte) tardan más en cargarse, almacenarse y capturarse, a pesar de que utilizan menos bits.

  • Números negativos. Dado que UInteger 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 UInteger, Visual Basic convierte primero la expresión en Long.

  • Conformidad con CLS. El tipo de datos UInteger 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 uint pueden tener un ancho de datos diferente (16 bits) en otros entornos. Si pasa un argumento de 16 bits a ese tipo de componente, declárelo como UShort en lugar de UInteger en el código de Visual Basic administrado.

  • Ampliación. El tipo de datos UInteger se amplía a Long, ULong, Decimal, Single y Double. Esto significa que puede convertir UInteger en cualquiera de estos tipos sin que se produzca un error System.OverflowException.

  • Caracteres de tipo. Al agregar el carácter de tipo literal UI a un literal, se convierte forzosamente al tipo de datos UInteger. UInteger no tiene ningún carácter de tipo identificador.

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

Consulte también