long (Riferimenti per C#)
La parola chiave long denota un tipo integrale che memorizza valori in base alla dimensione e all'intervallo indicati nella seguente tabella.
Digitare |
Intervallo |
Size |
Tipo .NET Framework |
---|---|---|---|
long |
Da –9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 |
Numero intero con segno a 64 bit |
Valori letterali
È possibile dichiarare e inizializzare una variabile long come nell'esempio riportato di seguito:
long long1 = 4294967296;
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 valore è di tipo long poiché è esterno all'intervallo di uint. Per informazioni sullo spazio necessario per l'archiviazione dei tipi integrali, vedere Tabella dei tipi integrali (Riferimenti per C#).
È inoltre possibile utilizzare il suffisso L con il tipo long, come illustrato di seguito:
long long2 = 4294967296L;
Quando si utilizza il suffisso L, il tipo del valore letterale integer viene impostato automaticamente su long o ulong a seconda delle dimensioni. In questo caso è di tipo long perché è minore dell'intervallo di ulong.
Il suffisso viene comunemente utilizzato per la chiamata di metodi di overload. Si considerino, ad esempio, i seguenti metodi di overload che utilizzano parametri long e int:
public static void SampleMethod(int i) {}
public static void SampleMethod(long l) {}
L'utilizzo del suffisso L garantisce che venga chiamato il tipo corretto, ad esempio:
SampleMethod(5); // Calling the method with the int parameter
SampleMethod(5L); // Calling the method with the long parameter
È possibile utilizzare il tipo long con altri tipi integrali numerici nella stessa espressione. In questo caso l'espressione darà un risultato di tipo long (o bool nel caso di espressioni relazionali o booleane). Ad esempio, l'espressione riportata di seguito restituisce long:
898L + 88
Nota
È anche 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".
Per informazioni sulle espressioni aritmetiche con tipi a virgola mobile e tipi integrali, vedere float e double.
Conversioni
Si verifica una conversione implicita predefinita da long in float, double o decimal. In tutti gli altri casi è necessario utilizzare un cast. L'istruzione seguente, ad esempio, genera un errore di compilazione, se non viene utilizzato un cast esplicito:
int x = 8L; // Error: no implicit conversion from long to int
int x = (int)8L; // OK: explicit conversion to int
Si verifica una conversione implicita predefinita da sbyte, byte, short, ushort, int, uint o char in long.
Si noti inoltre che non esiste alcuna conversione implicita dai tipi a virgola mobile a long. L'istruzione seguente, ad esempio, genera un errore di compilazione, a meno che non venga utilizzato un cast esplicito:
long x = 3.0; // Error: no implicit conversion from double
long y = (long)3.0; // OK: explicit conversion
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
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#)