uint (C#-Referenz)uint (C# Reference)

Das Schlüsselwort uint kennzeichnet einen ganzzahligen Typ, der Werte anhand der Größe und des Bereichs speichert, die in der folgenden Tabelle gezeigt werden.The uint keyword signifies 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
uint 0 bis 4.294.967.2950 to 4,294,967,295 32-Bit Ganzzahl ohne VorzeichenUnsigned 32-bit integer System.UInt32

Hinweis Der Typ uint ist nicht CLS-kompatibel.Note The uint type is not CLS-compliant. Verwenden Sie nach Möglichkeit int.Use int whenever possible.

LiteraleLiterals

Sie können eine uint-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 uint variable by assigning a decimal literal, a hexadecimal literal, or (starting with C# 7) a binary literal to it. Wenn sich das Ganzzahlliteral außerhalb des Bereichs von uint befindet (sprich, wenn es kleiner als UInt32.MinValue oder größer als UInt32.MaxValue ist) tritt ein Kompilierfehler auf.If the integer literal is outside the range of uint (that is, if it is less than UInt32.MinValue or greater than UInt32.MaxValue), a compilation error occurs.

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

uint uintValue1 = 3000000000;
Console.WriteLine(uintValue1);

uint uintValue2 = 0xB2D05E00;
Console.WriteLine(uintValue2);

uint uintValue3 = 0b1011_0010_1101_0000_0101_1110_0000_0000;
Console.WriteLine(uintValue3);
// The example displays the following output:
//          3000000000
//          3000000000
//          3000000000

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.

uint uintValue1 = 3_000_000_000;
Console.WriteLine(uintValue1);

uint uintValue2 = 0xB2D0_5E00;
Console.WriteLine(uintValue2);

uint uintValue3 = 0b1011_0010_1101_0000_0101_1110_0000_0000;
Console.WriteLine(uintValue3);

uint uintValue4 = 0x_B2D0_5E00;       // C# 7.2 onwards
Console.WriteLine(uintValue4);

uint uintValue5 = 0b_1011_0010_1101_0000_0101_1110_0000_0000;       // C# 7.2 onwards
Console.WriteLine(uintValue5);
// The example displays the following output:
//          3000000000
//          3000000000
//          3000000000
//          3000000000
//          3000000000

Ganzzahlliterale können auch ein Suffix enthalten, das den Typ bezeichnet.Integer literals can also include a suffix that denotes the type. Das Suffix U oder „u“ gibt entweder ein uint oder ulong an, abhängig vom numerischen Wert des Literals.The suffix U or 'u' denotes either a uint or a ulong, depending on the numeric value of the literal. Im folgenden Beispiel wird das u-Suffix verwendet, um eine ganze Zahl ohne Vorzeichen von beiden Typen zu kennzeichnen.The following example uses the u suffix to denote an unsigned integer of both types. Beachten Sie, dass das erste Literal ein uint ist, weil sein Wert kleiner als UInt32.MaxValue ist, während das zweite ein ulong ist, weil sein Wert größer als UInt32.MaxValue ist.Note that the first literal is a uint because its value is less than UInt32.MaxValue, while the second is a ulong because its value is greater than UInt32.MaxValue.

object value1 = 4000000000u;
Console.WriteLine($"{value1} ({4000000000u.GetType().Name})");
object value2 = 6000000000u;
Console.WriteLine($"{value2} ({6000000000u.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. uint
  3. longlong
  4. ulongulong

KonvertierungenConversions

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

float myFloat = 4294967290;   // OK: implicit conversion to float  

Es gibt eine vordefinierte implizite Konvertierung von byte, ushort oder char in uint.There is a predefined implicit conversion from byte, ushort, or char to uint. Andernfalls müssen Sie eine Umwandlung verwenden.Otherwise you must use a cast. Die folgende Anweisung erzeugt z.B. einen Kompilierungsfehler ohne Umwandlung:For example, the following assignment statement will produce a compilation error without a cast:

long aLong = 22;  
// Error -- no implicit conversion from long:  
uint uInt1 = aLong;   
// OK -- explicit conversion:  
uint uInt2 = (uint)aLong;  

Beachten Sie auch, dass es keine implizite Konvertierung von Gleitkomma-Datentypen in uint gibt.Notice also that there is no implicit conversion from floating-point types to uint. 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:  
uint x = 3.0;  
// OK -- explicit conversion:  
uint y = (uint)3.0;   

Informationen zu arithmetischen Ausdrücken mit ganzzahligen und Gleitkommatypen finden Sie unter float und double.For information about 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 about implicit numeric conversion rules, see the Implicit Numeric Conversions Table.

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

UInt32
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