Tipo de Dados ULong (Visual Basic)

Contém inteiros sem sinal de 64 bits (8 bytes) variando no valor de 0 a 18.446.744.073.709.551.615 (mais de 1,84 vezes 10 ^ 19).

Comentários

Use o tipo de dados ULong para conter dados binários muito grandes para UInteger ou os maiores valores inteiros sem sinal possíveis.

O valor padrão de ULong é 0.

Atribuições literais

Você pode declarar e inicializar uma variável ULong 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 ULong (ou seja, se for menor que UInt64.MinValue ou maior que UInt64.MaxValue, ocorrerá um erro de compilação.

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

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 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 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 ULong = &H_F9AC_0326_1489_D68C

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 tipoUL ou ul para indicar o tipo de dados ULong, como mostra o exemplo a seguir.

Dim number = &H_00_00_0A_96_2F_AC_14_D7ul

Dicas de programação

  • Números Negativos. Como ULong é 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 ULong, o Visual Basic primeiro converterá a expressão em Decimal.

  • Compatível com CLS. O tipo de dados ULong 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 de Automação ou COM, tenha em mente que tipos como ulong podem ter largura de dados diferente (32 bits) em outros ambientes. Se você estiver transmitindo um argumento de 32 bits para um componente desse tipo, declare-o como UInteger em vez de ULong no novo código gerenciado do Visual Basic.

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

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

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

Confira também