long (C#-Referenz)
Aktualisiert: November 2007
Das long-Schlüsselwort kennzeichnet einen ganzzahligen Typ, in dem Werte entsprechend der Größe und dem Bereich in der folgenden Tabelle gespeichert 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 |
Literale
Eine long-Variable kann wie im folgenden Beispiel deklariert und initialisiert werden:
long long1 = 4294967296;
Wenn ein Ganzzahlliteral kein Suffix besitzt, entspricht sein Typ dem ersten der folgenden Typen, mit dem sein Wert dargestellt werden kann: int, uint, long, ulong. Im vorangehenden Beispiel ist das Literal vom Typ long, da es den Bereich von uint überschreitet. (Informationen zu den Speichergrößen ganzzahliger Typen finden Sie unter Tabelle ganzzahliger Typen (C#-Referenz).)
Folgendermaßen können Sie auch das Suffix L mit dem long-Typ verwenden:
long long2 = 4294967296L;
Bei Verwendung des Suffixes L wird der Typ des Ganzzahlliterals abhängig von seiner Größe entweder als long oder als ulong festgelegt. In diesem Fall wird long verwendet, da dessen Bereich kleiner ist als der von ulong.
Suffixe werden häufig beim Aufrufen überladener Methoden eingesetzt. Betrachten Sie z. B. die folgenden überladenen Methoden, die den long-Parameter und den int-Parameter verwenden:
public static void SampleMethod(int i) {}
public static void SampleMethod(long l) {}
Durch das Suffix L wird sichergestellt, dass der richtige Typ aufgerufen wird. Beispiel:
SampleMethod(5); // Calling the method with the int parameter
SampleMethod(5L); // Calling the method with the long parameter
Sie können den Typ long zusammen mit anderen numerischen ganzzahligen Typen in demselben Ausdruck verwenden. In diesem Fall wird der Ausdruck als long (bzw. in relationalen oder booleschen Ausdrücken als bool) ausgewertet. Der folgende Ausdruck wird beispielsweise als long ausgewertet:
898L + 88
Hinweis: |
---|
Der Kleinbuchstabe "l" kann ebenfalls als Suffix verwendet werden. In diesem Fall wird jedoch eine Compilerwarnung generiert, da der Buchstabe "l" leicht mit der Ziffer "1" verwechselt werden kann. Verwenden Sie zur besseren Unterscheidung den Großbuchstaben "L". |
Weitere Informationen über arithmetische Ausdrücke aus Gleitkomma- und ganzzahligen Typen finden Sie unter float und double.
Konvertierungen
Es erfolgt eine vordefinierte implizite Konvertierung von long in float, double oder decimal. Andernfalls muss eine Typumwandlung durchgeführt werden. Ohne explizite Typumwandlung wird durch die folgende Anweisung z. B. ein Kompilierungsfehler generiert:
int x = 8L; // Error: no implicit conversion from long to int
int x = (int)8L; // OK: explicit conversion to int
Es erfolgt eine vordefinierte implizite Konvertierung von sbyte, byte, short, ushort, int, uint oder char in long.
Beachten Sie auch, dass Gleitkommatypen nicht implizit in long konvertiert werden. Durch die folgende Anweisung wird z. B. ein Compilerfehler generiert, sofern keine explizite Typumwandlung stattfindet:
long x = 3.0; // Error: no implicit conversion from double
long y = (long)3.0; // OK: explicit conversion
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
1.3 Typen und Variablen
4.1.5 Ganzzahlige Typen
Siehe auch
Konzepte
Referenz
Tabelle ganzzahliger Typen (C#-Referenz)
Tabelle integrierter Typen (C#-Referenz)
Tabelle für implizite numerische Konvertierungen (C#-Referenz)
Tabelle für explizite numerische Konvertierungen (C#-Referenz)