ulong (Riferimenti per C#)
Aggiornamento: novembre 2007
La parola chiave ulong denota un tipo integrale che archivia valori in base alla dimensione e all'intervallo indicati nella seguente tabella.
Type |
Range |
Size |
Tipo .NET Framework |
---|---|---|---|
ulong |
Da 0 a 18.446.744.073.709.551.615 |
Numero intero senza segno a 64 bit |
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 le sezioni riportate di seguito in Specifiche del linguaggio C#:
1.3 Tipi e variabili
4.1.5 Tipi integrali
Vedere anche
Concetti
Riferimenti
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#)