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 tipo UInteger, Visual Basic converte prima l'espressione in Long.

  • 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 come UShort anziché come UInteger nel codice Visual Basic gestito.

  • Widening. Il tipo di dati UInteger si allarga a Long, ULong, Decimal, Single e Double. Ciò significa che è possibile convertire UInteger 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 dati UInteger. UInteger non ha alcun carattere di tipo identificatore.

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

Vedi anche