long (C#-Referenz)long (C# Reference)

long kennzeichnet einen Ganzzahltyp, der Werte anhand der Größe und des Bereichs speichert, die in der folgenden Tabelle gezeigt werden.long denotes an integral type that stores values according to the size and range shown in the following table.

TypType BereichRange GrößeSize .NET Framework-Typ.NET Framework type
long -9,223,372,036,854,775,808 bis 9,223,372,036,854,775,807-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 64-Bit-Ganzzahl mit VorzeichenSigned 64-bit integer System.Int64

LiteraleLiterals

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.You can declare and initialize a long variable by assigning a decimal literal, a hexadecimal literal, or (starting with C# 7) a binary literal to it.

Im folgenden Beispiel werden Ganzzahlen wie 4294967296, die als dezimale, hexadezimale und binäre Literale dargestellt werden, den long-Werten zugewiesen.In the following example, integers equal to 4,294,967,296 that are represented as decimal, hexadecimal, and binary literals are assigned to long values.

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.You use the prefix 0x or 0X to denote a hexadecimal literal and the prefix 0b or 0B to denote a binary literal. Dezimale Literale haben kein Präfix.Decimal literals have no prefix.

Beginnend mit C#-7, eine Reihe von Features hinzugefügt wurden zur Verbesserung der Lesbarkeit.Starting with C# 7, a couple of features have been added to enhance readability.

  • C#-7.0 ermöglicht die Verwendung des Zeichens Unterstrich _, als Trennzeichen für Ziffern.C# 7.0 allows the usage of the underscore character, _, as a digit separator.
  • 7.2 c# ermöglicht _ als Trennzeichen für ein Literal binäre oder hexadezimale Ziffer nach dem Präfix verwendet werden soll.C# 7.2 allows _ to be used as a digit separator for a binary or hexadecimal literal, after the prefix. Ein decimal-Literal ist nicht berechtigt, auf einem führenden Unterstrich.A decimal literal isn't permitted to have a leading underscore.

Einige Beispiele werden unten gezeigt.Some examples are shown below.

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

long longValue4 = 0x_1_0000_0000;       // C# 7.2 onwards
Console.WriteLine(longValue4);

long longValue5 = 0b_1_0000_0000_0000_0000_0000_0000_0000_0000;       // C# 7.2 onwards
Console.WriteLine(longValue5);
// The example displays the following output:
//          4294967296
//          4294967296
//          4294967296
//          4294967296
//          4294967296

Ganzzahlliterale können auch ein Suffix enthalten, das den Typ bezeichnet.Integer literals can also include a suffix that denotes the type. Das Suffix L kennzeichnet ein long.The suffix L denotes a long. Im folgenden Beispiel wird das L-Suffix verwendet, um eine lange ganze Zahl anzugeben:The following example uses the L suffix to denote a long integer:

long value = 4294967296L;  

Hinweis

Sie können auch Kleinbuchstabe „l“ als Suffix verwenden.You can also use the lowercase letter "l" as a suffix. Allerdings erzeugt dies eine Compilerwarnung, weil der Buchstabe „l“ leicht mit der Zahl „1“ verwechselt wird.However, this generates a compiler warning because the letter "l" is easily confused with the digit "1." Verwenden Sie aus Gründen der Klarheit „L“.Use "L" for clarity.

Wenn Sie das Suffix L verwenden, wird der Typ des Ganzzahlliterals entweder als long oder ulong bestimmt, abhängig von seiner Größe.When you use the suffix L, the type of the literal integer is determined to be either long or ulong, depending on its size. In diesem Fall ist er long, weil er kleiner als der Bereich von ulong ist.In this case, it is long because it less than the range of ulong.

Das Suffix wird häufig zum Aufrufen überladener Methoden verwendet.A common use of the suffix is to call overloaded methods. Die folgenden überladenen Methoden z.B. verfügen über Parameter des Typs long und int:For example, the following overloaded methods have parameters of type long and int:

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

Das L-Suffix gewährleistet, dass die richtige Überladung aufgerufen wird:The L suffix guarantees that the correct overload is called:

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:If an integer literal has no suffix, its type is the first of the following types in which its value can be represented:

  1. intint
  2. uintuint
  3. long
  4. ulongulong

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).The literal 4294967296 in the previous examples is of type long, because it exceeds the range of uint (see Integral Types Table for the storage sizes of integral types).

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).If you use the long type with other integral types in the same expression, the expression is evaluated as long (or bool in the case of relational or Boolean expressions). Der folgende Ausdruck wird z.B. als long ausgewertet:For example, the following expression evaluates as long:

898L + 88  

Informationen zu arithmetischen Ausdrücken mit Gleitkomma- und Ganzzahltypen finden Sie unter float und double.For information on arithmetic expressions with mixed floating-point types and integral types, see float and double.

KonvertierungenConversions

Es gibt eine vordefinierte implizite Konvertierung von long in float, double oder decimal.There is a predefined implicit conversion from long to float, double, or decimal. Ansonsten muss eine Umwandlung verwendet werden.Otherwise a cast must be used. Die folgende Anweisung erzeugt z.B. einen Kompilierungsfehler ohne explizite Umwandlung:For example, the following statement will produce a compilation error without an explicit cast:

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.There is a predefined implicit conversion from sbyte, byte, short, ushort, int, uint, or char to long.

Beachten Sie auch, dass es keine implizite Konvertierung von Gleitkomma-Datentypen in long gibt.Notice also that there is no implicit conversion from floating-point types to long. Die folgende Anweisung erzeugt z.B. einen Compilerfehler, außer es wird eine explizite Umwandlung verwendet:For example, the following statement generates a compiler error unless an explicit cast is used:

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

C#-ProgrammiersprachenspezifikationC# Language Specification

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

Siehe auchSee Also

Int64
C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
Tabelle ganzzahliger TypenIntegral Types Table
Tabelle integrierter TypenBuilt-In Types Table
Tabelle für implizite numerische KonvertierungenImplicit Numeric Conversions Table
Tabelle für explizite numerische KonvertierungenExplicit Numeric Conversions Table