ulong (Riferimenti per C#)

La parola chiave ulong denota un tipo integrale che memorizza valori in base alla dimensione e all'intervallo indicati nella seguente tabella.

Digitare

Intervallo

Size

Tipo .NET Framework

ulong

Da 0 a 18.446.744.073.709.551.615

Numero intero senza segno a 64 bit

System.UInt64

Valori letterali

È possibile dichiarare e inizializzare una variabile ulong come nell'esempio riportato di seguito:

ulong uLong = 9223372036854775808;

Quando un valore letterale integer non ha alcun suffisso, il tipo è il primo dei seguenti tipi in cui è possibile rappresentarne il valore: int, uint, long, ulong. Nell'esempio precedente il tipo è ulong.

È inoltre possibile utilizzare un suffisso per specificare il tipo del valore letterale in base ai criteri descritti di seguito.

  • Se si utilizza L o l, il tipo del valore letterale integer sarà long o ulong, a seconda delle dimensioni.

    Nota

    È possibile utilizzare la lettera minuscola "l" come suffisso. In questo caso, viene tuttavia generato un avviso del compilatore perché la lettera "l" viene facilmente confusa con la cifra "1". Per maggiore chiarezza, utilizzare la lettera "L".

  • Se si utilizzaU o u, il tipo del valore letterale integer sarà uint o ulong, a seconda delle dimensioni.

  • Se si utilizza UL, ul, Ul, uL, LU, lu, Lu o lU, il tipo del valore letterale integer sarà ulong.

    L'output delle tre istruzioni riportate di seguito, ad esempio, sarà il tipo di sistema UInt64 che corrisponde all'alias ulong:

    Console.WriteLine(9223372036854775808L.GetType());
    Console.WriteLine(123UL.GetType());
    Console.WriteLine((123UL + 456).GetType());
    

Il suffisso viene comunemente utilizzato per la chiamata di metodi di overload. Si considerino, ad esempio, i seguenti metodi di overload che utilizzano parametri ulong e int:

public static void SampleMethod(int i) {}
public static void SampleMethod(ulong l) {}

L'utilizzo di un suffisso con il parametro ulong garantisce che venga chiamato il tipo corretto, ad esempio:

SampleMethod(5);    // Calling the method with the int parameter
SampleMethod(5UL);  // Calling the method with the ulong parameter

Conversioni

Si verifica una conversione implicita predefinita da ulong in float, double o decimal.

Non esiste alcuna conversione implicita da ulong ai tipi integrali. L'istruzione seguente, ad esempio, genera un errore di compilazione, se non viene utilizzato un cast esplicito:

long long1 = 8UL;   // Error: no implicit conversion from ulong

Si verifica una conversione implicita predefinita da byte, ushort, uint o char in ulong.

Non esiste inoltre alcuna conversione implicita dai tipi a virgola mobile a ulong. L'istruzione seguente, ad esempio, genera un errore di compilazione, a meno che non venga utilizzato un cast esplicito:

// Error -- no implicit conversion from double:
ulong x = 3.0;
// OK -- explicit conversion:
ulong y = (ulong)3.0;  

Per informazioni sulle espressioni aritmetiche con tipi a virgola mobile e tipi integrali, vedere float e double.

Per ulteriori informazioni sulle regole di conversione numerica implicita, vedere Tabella delle conversioni numeriche implicite (Riferimenti per C#).

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Vedere anche

Riferimenti

Parole chiave di C#

Tabella dei tipi integrali (Riferimenti per C#)

Tabella dei tipi incorporati (Riferimenti per C#)

Tabella delle conversioni numeriche implicite (Riferimenti per C#)

Tabella delle conversioni numeriche esplicite (Riferimenti per C#)

UInt64

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#