ulong (C#-Referenz)

Das Schlüsselwort ulong kennzeichnet einen ganzzahligen Typ, der Werte anhand der Größe und des Bereichs speichert, die in der folgenden Tabelle gezeigt werden.

Typ Bereich Größe .NET Framework-Typ
ulong 0 bis 18.446.744.073.709.551.615 64-Bit-Ganzzahl ohne Vorzeichen System.UInt64

Literale

Sie können eine ulong-Variable deklarieren und initialisieren, indem Sie ihr ein dezimales Literal, ein hexadezimales Literal oder (beginnend mit C# 7) ein binäres Literal zuweisen. Wenn das Ganzzahlliteral außerhalb des Bereichs von ulong liegt, d.h., wenn es kleiner als UInt64.MinValue oder größer als UInt64.MaxValue ist, tritt ein Kompilierungsfehler auf.

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

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. 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 UL oder ul identifiziert unzweideutig ein numerisches Literal als ein ulong-Wert. Das L-Suffix kennzeichnet ein ulong, wenn der literale Wert Int64.MaxValue überschreitet. Und das Suffix U oder u kennzeichnet ein ulong, wenn der literale Wert UInt32.MaxValue überschreitet. Im folgenden Beispiel wird das ul-Suffix verwendet, um eine lange ganze Zahl anzugeben:

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

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

Überladungsauflösung des Compiler

Das Suffix wird häufig beim Aufrufen überladener Methoden verwendet. Dies ist z.B. in den folgenden überladenen Methoden der Fall, die die Parameter ulong und int verwenden:

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.:

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

Konvertierungen

Es gibt eine vordefinierte implizite Konvertierung von ulong in float, double oder decimal.

Es gibt keine implizite Konvertierung von ulong in ganzzahlige Typen. Die folgende Anweisung erzeugt z.B. einen Kompilierungsfehler ohne explizite Umwandlung:

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

Es gibt eine vordefinierte implizite Konvertierung von byte, ushort, uint oder char in ulong.

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

// 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.

Weitere Informationen zu impliziten numerischen Konvertierungsregeln finden Sie in der Tabelle für implizite numerische Konvertierungen.

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

UInt64
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