Tipo di dati ULong (Visual Basic)

Contiene interi senza segno a 64 bit (8 byte) compresi tra 0 e 18,446,744,073,709,551,615 (più di 1,84 volte 10 ^ 19).

Osservazioni:

Usare il tipo di dati ULong per contenere i dati binari troppo grandi per UInteger o i valori interi senza segno più grandi possibili.

Il valore predefinito di ULong è 0.

Assegnazioni di valori letterali

È possibile dichiarare e inizializzare una variabile ULong assegnandole un valore letterale decimale, un valore letterale esadecimale, un valore letterale ottale o (a partire da Visual Basic 2017) un valore letterale binario. Se il valore letterale integer è esterno all'intervallo di ULong, vale a dire se è minore di UInt64.MinValue o maggiore di UInt64.MaxValue, si verifica un errore di compilazione.

Nell'esempio seguente, i valori interi uguali a 7.934.076.125 rappresentati come valori letterali decimali, esadecimali o binari vengono assegnati a valori 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

Usare il prefisso &h o &H per indicare un valore letterale esadecimale, il prefisso &b o &B per indicare un valore letterale binario e il prefisso &o o &O per indicare un valore letterale ottale. I valori letterali decimali non hanno prefissi.

A partire da Visual Basic 2017, è anche possibile usare il carattere di sottolineatura, _, come separatore di cifre per migliorare la leggibilità, come illustrato nell'esempio seguente.

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 partire da Visual Basic 15.5, è anche possibile usare il carattere di sottolineatura (_) come separatore iniziale tra il prefisso e le cifre esadecimali, binarie oppure ottali. Ad esempio:

Dim number As ULong = &H_F9AC_0326_1489_D68C

Per usare il carattere di sottolineatura come separatore iniziale, è necessario aggiungere l'elemento seguente al file di progetto di Visual Basic (*.vbproj):

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

Per altre informazioni, vedere Selezionare la versione del linguaggio Visual Basic.

I valori letterali numerici possono includere anche il carattere di tipoUL o ul per indicare il tipo di dati ULong, come illustrato nell'esempio seguente.

Dim number = &H_00_00_0A_96_2F_AC_14_D7ul

Suggerimenti per la programmazione

  • Numeri negativi. Poiché ULong è un tipo senza segno, non può rappresentare un numero negativo. Se si utilizza l'operatore unario meno (-) in un'espressione che restituisce il tipo ULong, Visual Basic converte innanzitutto l'espressione in Decimal.

  • Conformità a CLS. Il tipo di dati ULong non fa parte di Common Language Specification (CLS), pertanto il codice conforme a CLS non può utilizzare un componente che usa tale tipo di dati.

  • Considerazioni sull'interoperabilità. Se si prevede l'interazione con componenti non scritti per .NET Framework, ad esempio oggetti COM o di Automazione, si tenga presente che i tipi come ulong possono avere una larghezza dei dati diversa (32 bit) in altri ambienti. Se si passa un argomento a 32 bit a un componente di questo tipo, nel codice Visual Basic gestito dichiararlo come UInteger anziché come ULong.

  • Ampliamento. Il tipo di dati ULong può essere ampliato in Decimal, Single e Double. È pertanto possibile convertire ULong in uno di questi tipi senza generare un errore System.OverflowException.

  • Caratteri tipo. Se si aggiungono i caratteri di tipo letterale UL a un valore letterale, si forza la conversione di tale valore nel tipo di dati ULong. ULong non ha un carattere di tipo identificatore.

  • Tipo di Framework. Il tipo corrispondente in .NET Framework è la struttura System.UInt64.

Vedi anche