UInteger (tipo di dati)
Contiene interi senza segno a 32 bit (4 byte) con valori compresi tra 0 e 4.294.967.295.
Osservazioni:
Il tipo di dati UInteger
fornisce il valore senza segno più elevato nella larghezza dei dati più efficiente.
Il valore predefinito di UInteger
è 0.
Assegnazioni di valori letterali
È possibile dichiarare e inizializzare una variabile UInteger
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 UInteger
, vale a dire se è minore di UInt32.MinValue o maggiore di UInt32.MaxValue, si verifica un errore di compilazione.
Nell'esempio seguente, i valori interi uguali a 3.000.000.000 rappresentati come valori letterali decimali, esadecimali o binari vengono assegnati a valori 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
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 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 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 UInteger = &H_0F8C_0326
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 UI
o ui
per indicare il tipo di dati UInteger
, come illustrato nell'esempio seguente.
Dim number = &H_0FAC_14D7ui
Suggerimenti per la programmazione
I tipi di dati UInteger
e Integer
offrono prestazioni ottimali su un processore a 32 bit, perché i tipi Integer più piccoli (UShort
, Short
, Byte
e SByte
), anche se utilizzano meno bit, richiedono più tempo per caricare, archiviare e recuperare.
Numeri negativi. Poiché
UInteger
è un tipo senza segno, non può rappresentare un numero negativo. Se si utilizza l'operatore meno unario (-
) in un'espressione che restituisce il tipoUInteger
, Visual Basic converte prima l'espressione inLong
.Conformità a CLS. Il tipo di dati
UInteger
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 interagisce con i componenti non scritti per .NET Framework, ad esempio oggetti Automation o COM, tenere presente che i tipi come
uint
possono avere una larghezza dei dati diversa (16 bit) in altri ambienti. Se si passa un argomento a 16 bit a un componente di questo tipo, è necessario dichiararlo comeUShort
anziché comeUInteger
nel codice Visual Basic gestito.Widening. Il tipo di dati
UInteger
si allarga aLong
,ULong
,Decimal
,Single
eDouble
. Ciò significa che è possibile convertireUInteger
in uno di questi tipi senza generare un errore System.OverflowException.Caratteri di tipo. Se si accodano i caratteri di tipo letterale
UI
a un valore letterale, si forza la conversione di tale valore nel tipo di datiUInteger
.UInteger
non ha alcun carattere di tipo identificatore.Tipo di Framework. Il tipo corrispondente in .NET Framework è la struttura System.UInt32.