tipo de dados UInteger

Contém inteiros sem sinal de 32 bits (4 bytes) variando no valor de zero a 4.294.967.295.

Comentários

O tipo de dados UInteger fornece o maior valor não assinado na largura de dados mais eficiente.

O valor padrão de UInteger é 0.

Atribuições literais

Você pode declarar e inicializar uma variável UInteger atribuindo a ela um literal decimal, hexadecimal, octal ou (a partir do Visual Basic 2017) binário. Se o literal inteiro estiver fora do intervalo de UInteger (ou seja, se for menor que UInt32.MinValue ou maior que UInt32.MaxValue, ocorrerá um erro de compilação.

No exemplo a seguir, inteiros iguais a 3.000.000.000 representados como literais decimais, hexadecimais e binários são atribuídos 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

Observação

Use o prefixo &h ou &H para indicar um literal hexadecimal, &b ou &B para indicar um literal binário e &o ou &O para indicar um literal octal. Literais decimais não têm nenhum prefixo.

A partir do Visual Basic 2017, você também pode usar o caractere de sublinhado, _, como separador de dígitos para melhorar a legibilidade, como no exemplo a seguir.

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 do Visual Basic 15.5, você também pode usar o caractere de sublinhado (_) como separador à esquerda entre o prefixo e os dígitos hexadecimais, binários ou octais. Por exemplo:

Dim number As UInteger = &H_0F8C_0326

Para usar o caractere de sublinhado como separador à esquerda, você deve adicionar o seguinte elemento ao arquivo de projeto do Visual Basic (*.vbproj):

<PropertyGroup>
  <LangVersion>15.5</LangVersion>
</PropertyGroup>

Para obter mais informações, consulte Selecionar a versão da linguagem Visual Basic.

Literais numéricos também podem incluir caractere do tipoUI ou ui para indicar o tipo de dados UInteger, como mostra o exemplo a seguir.

Dim number = &H_0FAC_14D7ui

Dicas de programação

Os tipos de dadosUInteger e Integer fornecem desempenho ideal em um processador de 32 bits, pois os tipos inteiros menores (UShort, Short, Byte e SByte), embora usem menos bits, levam mais tempo para carregar, armazenar e buscar.

  • Números Negativos. Como UInteger é um tipo sem sinal, não pode representar um número negativo. Se você usar o operador unário menos (-) em uma expressão avaliada como tipo UInteger, o Visual Basic primeiro converterá a expressão em Long.

  • Compatível com CLS. O tipo de dados UInteger não faz parte da CLS ( Common Language Specification ), portanto, o código em conformidade com CLS não pode consumir um componente que o utilize.

  • Considerações sobre interoperabilidade. Se você estiver fazendo interface com componentes não escritos para o .NET Framework, como objetos Automation ou COM, tenha em mente que tipos como uint podem ter largura de dados diferente (16 bits) em outros ambientes. Se você estiver transmitindo um argumento de 16 bits para um componente desse tipo, declare-o como UShort em vez de UInteger no seu novo código gerenciado do Visual Basic.

  • Ampliação. O tipo de dados UInteger é ampliado para Long, ULong, Decimal, Single e Double. Isso significa que você pode converter UInteger em qualquer um desses tipos sem a ocorrência de um erro System.OverflowException.

  • Caracteres de tipo. Acrescentar os caracteres do tipo literal UI a um literal o força ao tipo de dados UInteger. UInteger não tem caractere de identificação de tipo.

  • Tipo do Framework. O tipo correspondente no .NET Framework é a estrutura System.UInt32.

Confira também