ulong (C#-Referenz)ulong (C# Reference)

Das ulong-Schlüsselwort kennzeichnet einen ganzzahligen Typ, der Werte anhand der Größe und des Bereichs speichert, die in der folgenden Tabelle gezeigt werden.The ulong keyword denotes an integral type that stores values according to the size and range shown in the following table.

TypType BereichRange GrößeSize .NET-Typ.NET type
ulong 0 bis 18.446.744.073.709.551.6150 to 18,446,744,073,709,551,615 64-Bit-Ganzzahl ohne VorzeichenUnsigned 64-bit integer System.UInt64

LiteraleLiterals

Sie können eine ulong-Variable deklarieren und initialisieren, indem Sie ihr ein Dezimalliteral, ein hexadezimales Literal oder (ab C# 7.0) ein binäres Literal zuweisen.You can declare and initialize a ulong variable by assigning a decimal literal, a hexadecimal literal, or (starting with C# 7.0) a binary literal to it. Wenn sich das Ganzzahlliteral außerhalb des Bereichs von ulong befindet (sprich, wenn es kleiner als UInt64.MinValue oder größer als UInt64.MaxValue ist) tritt ein Kompilierfehler auf.If the integer literal is outside the range of ulong (that is, if it is less than UInt64.MinValue or greater than UInt64.MaxValue), a compilation error occurs.

Im folgenden Beispiel werden Ganzzahlen wie 7.934.076.125, die als dezimale, hexadezimale und binäre Literale dargestellt werden, den ulong-Werten zugewiesen.In the following example, integers equal to 7,934,076,125 that are represented as decimal, hexadecimal, and binary literals are assigned to ulong values.

ulong ulongValue1 = 7934076125;
Console.WriteLine(ulongValue1);

ulong ulongValue2 = 0x0001D8e864DD;
Console.WriteLine(ulongValue2);

ulong ulongValue3 = 0b0001_1101_1000_1110_1000_0110_0100_1101_1101;
Console.WriteLine(ulongValue3);
// The example displays the following output:
//          7934076125
//          7934076125
//          7934076125

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.

Mit C# 7.0 wurde eine Reihe von Features zur Verbesserung der Lesbarkeit hinzugefügt.Starting with C# 7.0, a couple of features have been added to enhance readability.

  • C# 7.0 lässt die Verwendung des Unterstrichs (_) als Zifferntrennzeichen zu.C# 7.0 allows the usage of the underscore character, _, as a digit separator.
  • C# 7.2 lässt die Verwendung von _ als Zifferntrennzeichen nach dem Präfix für ein binäres oder hexadezimales Literal zu.C# 7.2 allows _ to be used as a digit separator for a binary or hexadecimal literal, after the prefix. Dezimalliterale dürfen keinen vorangestellten Unterstrich aufweisen.A decimal literal isn't permitted to have a leading underscore.

Im Folgenden werden einige Beispiele veranschaulicht.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 UL oder ul identifiziert unzweideutig ein numerisches Literal als ein ulong-Wert.The suffix UL or ul unambiguously identifies a numeric literal as a ulong value. Das L-Suffix kennzeichnet ein ulong, wenn der Literalwert Int64.MaxValue überschreitet.The L suffix denotes a ulong if the literal value exceeds Int64.MaxValue. Das U- oder u-Suffix kennzeichnet ein ulong, wenn der Literalwert UInt32.MaxValue überschreitet.And the U or u suffix denotes a ulong if the literal value exceeds UInt32.MaxValue. Im folgenden Beispiel wird das ul-Suffix verwendet, um eine lange ganze Zahl anzugeben:The following example uses the ul suffix to denote a long integer:

object value1 = 700000000000ul;
Console.WriteLine($"{value1} ({700000000000ul.GetType().Name})");

Wenn ein Ganzzahlliteral kein Suffix besitzt, ist sein Typ der erste dieser 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. longlong
  4. ulong

Überladungsauflösung des CompilerCompiler overload resolution

Das Suffix wird häufig beim Aufrufen überladener Methoden verwendet.A common use of the suffix is with calling overloaded methods. Dies ist z.B. in den folgenden überladenen Methoden der Fall, die die Parameter ulong und int verwenden:Consider, for example, the following overloaded methods that use ulong and int parameters:

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

Die Verwendung eines Suffixes mit dem Parameter ulong gewährleistet, dass der richtige Typ aufgerufen wird, wie z.B.:Using a suffix with the ulong parameter guarantees that the correct type is called, for example:

SampleMethod(5);    // Calling the method with the int parameter  
SampleMethod(5UL);  // Calling the method with the ulong parameter  

KonvertierungenConversions

Es gibt eine vordefinierte implizite Konvertierung von ulong in float, double oder decimal.There is a predefined implicit conversion from ulong to float, double, or decimal.

Es gibt keine implizite Konvertierung von ulong in ganzzahlige Typen.There is no implicit conversion from ulong to any integral type. 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:

long long1 = 8UL;   // Error: no implicit conversion from ulong  

Es gibt eine vordefinierte implizite Konvertierung von byte, ushort, uint oder char in ulong.There is a predefined implicit conversion from byte, ushort, uint, or char to ulong.

Beachten Sie auch, dass es keine implizite Konvertierung von Gleitkomma-Datentypen in ulong gibt.Also, there is no implicit conversion from floating-point types to ulong. 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:

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

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.

Weitere Informationen zu impliziten numerischen Konvertierungsregeln finden Sie in der Tabelle für implizite numerische Konvertierungen.For more information on implicit numeric conversion rules, see the Implicit Numeric Conversions Table.

C#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation.For more information, see the C# Language Specification. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.The language specification is the definitive source for C# syntax and usage.

Siehe auchSee Also

UInt64
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