long (C#-Referenz)

long kennzeichnet einen Ganzzahltyp, der Werte anhand der Größe und des Bereichs speichert, die in der folgenden Tabelle gezeigt werden.

Typ Bereich Größe .NET Framework-Typ
long –9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 64-Bit-Ganzzahl mit Vorzeichen System.Int64

Literale

Sie können eine long-Variable deklarieren und initialisieren, indem Sie ihr ein dezimales Literal, ein hexadezimales Literal oder (beginnend mit C# 7) ein binäres Literal zuweisen.

Im folgenden Beispiel werden Ganzzahlen wie 4294967296, die als dezimale, hexadezimale und binäre Literale dargestellt werden, den long-Werten zugewiesen.

long longValue1 = 4294967296;
Console.WriteLine(longValue1);

long longValue2 = 0x100000000;
Console.WriteLine(longValue2);

long longValue3 = 0b1_0000_0000_0000_0000_0000_0000_0000_0000;
Console.WriteLine(longValue3);
// The example displays the following output:
//          4294967296
//          4294967296
//          4294967296
Hinweis

Verwenden Sie das Präfix 0x oder 0X zum Kennzeichnen eines hexadezimalen Literals und das Präfix 0b oder 0B zum Kennzeichnen eines binären Literals. Dezimale Literale haben kein Präfix.

Ab C# 7 können Sie auch den Unterstrich, _, als Zifferntrennzeichen zum Verbessern der Lesbarkeit verwenden, wie im folgenden Beispiel veranschaulicht.

long longValue1 = 4_294_967_296;
Console.WriteLine(longValue1);

long longValue2 = 0x1_0000_0000;
Console.WriteLine(longValue2);

long longValue3 = 0b1_0000_0000_0000_0000_0000_0000_0000_0000;
Console.WriteLine(longValue3);
// The example displays the following output:
//          4294967296
//          4294967296
//          4294967296

Ganzzahlliterale können auch ein Suffix enthalten, das den Typ bezeichnet. Das Suffix L kennzeichnet ein long. Im folgenden Beispiel wird das L-Suffix verwendet, um eine lange ganze Zahl anzugeben:

long value = 4294967296L;  
Hinweis

Sie können auch Kleinbuchstabe „l“ als Suffix verwenden. Allerdings erzeugt dies eine Compilerwarnung, weil der Buchstabe „l“ leicht mit der Zahl „1“ verwechselt wird. Verwenden Sie aus Gründen der Klarheit „L“.

Wenn Sie das Suffix L verwenden, wird der Typ des Ganzzahlliterals entweder als long oder ulong bestimmt, abhängig von seiner Größe. In diesem Fall ist er long, weil er kleiner als der Bereich von ulong ist.

Das Suffix wird häufig zum Aufrufen überladener Methoden verwendet. Die folgenden überladenen Methoden z.B. verfügen über Parameter des Typs long und int:

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

Das L-Suffix gewährleistet, dass die richtige Überladung aufgerufen wird:

SampleMethod(5);    // Calls the method with the int parameter  
SampleMethod(5L);   // Calls the method with the long parameter  

Wenn ein Ganzzahlliteral kein Suffix besitzt, ist sein Typ der erste der folgenden Typen, in dem sein Wert dargestellt werden kann:

  1. int
  2. uint
  3. long
  4. ulong

Das Literal 4294967296 im vorhergehenden Beispiel ist vom Typ long, da er den Bereich von uint überschreitet (Speichergrößen von ganzzahligen Typen finden Sie unter Tabelle ganzzahliger Typen).

Wenn Sie den long-Typ mit anderen ganzzahligen Typen im selben Ausdruck verwenden, wird der Ausdruck als long ausgewertet (oder bool im Fall von relationalen oder booleschen Ausdrücken). Der folgende Ausdruck wird z.B. als long ausgewertet:

898L + 88  

Informationen zu arithmetischen Ausdrücken mit Gleitkomma- und Ganzzahltypen finden Sie unter float und double.

Konvertierungen

Es gibt eine vordefinierte implizite Konvertierung von long in float, double oder decimal. Ansonsten muss eine Umwandlung verwendet werden. Die folgende Anweisung erzeugt z.B. einen Kompilierungsfehler ohne explizite Umwandlung:

int x = 8L;        // Error: no implicit conversion from long to int  
int x = (int)8L;   // OK: explicit conversion to int  

Es gibt eine vordefinierte implizite Konvertierung von sbyte, byte, short, ushort, int, uint oder char in long.

Beachten Sie auch, dass es keine implizite Konvertierung von Gleitkomma-Datentypen in long gibt. Die folgende Anweisung erzeugt z.B. einen Compilerfehler, außer es wird eine explizite Umwandlung verwendet:

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

C#-Programmiersprachenspezifikation

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch

Int64</xref:System.Int64>
C#-Referenz
C#-Programmierhandbuch
C#-Schlüsselwörter
Tabelle ganzzahliger Typen
Tabelle integrierter Typen
Tabelle für implizite numerische Konvertierungen
Tabelle für explizite numerische Konvertierungen