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

System.Int64

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

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#)

Int64

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#