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 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
Si utilizza 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, è possibile anche usare il carattere underscore, _
, 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, è possibile anche usare il carattere underscore (_
) 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 underscore come separatore iniziale, è necessario aggiungere l'elemento seguente al file di progetto 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 tipo UL
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 meno unario (-
) in un'espressione che restituisce il tipoULong
, Visual Basic converte prima l'espressione inDecimal
.Conformità a CLS. Il tipo di dati
ULong
non fa parte del 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, tenere presente che i tipi come
ulong
in altri ambienti possono avere un'ampiezza dei dati diversa (32 bit). Se si passa un argomento a 32 bit a un componente di questo tipo, nel codice Visual Basic gestito è necessario eseguirne la dichiarazione comeUInteger
anziché comeULong
.Ampliamento. Il tipo di dati
ULong
può ampliarsi nel tipoDecimal
,Single
eDouble
. È pertanto possibile convertireULong
in uno di questi tipi senza generare un errore System.OverflowException.Caratteri di tipo. Se si accodano i caratteri di tipo letterale
UL
a un valore letterale, si forza la conversione di tale valore nel tipo di datiULong
.ULong
non ha alcun carattere di tipo identificatore.Tipo di Framework. Il tipo corrispondente in .NET Framework è la struttura System.UInt64.