ushort (C#-Referenz)ushort (C# Reference)

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

TypType BereichRange GrößeSize .NET-Typ.NET type
ushort 0 bis 65.5350 to 65,535 16-Bit-Ganzzahl ohne VorzeichenUnsigned 16-bit integer System.UInt16

LiteraleLiterals

Sie können eine ushort-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 ushort 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 ushort befindet (sprich, wenn es kleiner als UInt16.MinValue oder größer als UInt16.MaxValue ist) tritt ein Kompilierfehler auf.If the integer literal is outside the range of ushort (that is, if it is less than UInt16.MinValue or greater than UInt16.MaxValue), a compilation error occurs.

Im folgenden Beispiel werden Ganzzahlen wie 65.034, die als dezimale, hexadezimale und binäre Literale dargestellt werden, implizit aus int in ushort-Werte konvertiert.In the following example, integers equal to 65,034 that are represented as decimal, hexadecimal, and binary literals are implicitly converted from int to ushort values.

ushort ushortValue1 = 65034;
Console.WriteLine(ushortValue1);

ushort ushortValue2 = 0xFE0A;
Console.WriteLine(ushortValue2);

ushort ushortValue3 = 0b1111_1110_0000_1010;
Console.WriteLine(ushortValue3);
// The example displays the following output:
//          65034
//          65034
//          65034

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.

ushort ushortValue1 = 65_034;
Console.WriteLine(ushortValue1);

ushort ushortValue2 = 0b11111110_00001010;
Console.WriteLine(ushortValue2);

ushort ushortValue3 = 0b_11111110_00001010;     // C# 7.2 onwards
Console.WriteLine(ushortValue3);
// The example displays the following output:
//          65034
//          65034
//          65034

Überladungsauflösung des CompilerCompiler overload resolution

Beim Aufrufen überladener Methoden muss eine Typumwandlung durchgeführt werden.A cast must be used when you call overloaded methods. Betrachten Sie z.B. die folgenden überladenen Methoden, die die Parameter ushort und int verwenden:Consider, for example, the following overloaded methods that use ushort and int parameters:

public static void SampleMethod(int i) {}  
public static void SampleMethod(ushort s) {}  

Die Verwendung der ushort-Umwandlung gewährleistet, dass der richtige Typ aufgerufen wird, wie z.B.:Using the ushort cast guarantees that the correct type is called, for example:

// Calls the method with the int parameter:  
SampleMethod(5);  
// Calls the method with the ushort parameter:  
SampleMethod((ushort)5);    

KonvertierungenConversions

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

Es gibt eine vordefinierte implizite Konvertierung von byte oder char in ushort.There is a predefined implicit conversion from byte or char to ushort. Andernfalls muss eine Umwandlung verwendet werden, um eine explizite Konvertierung durchzuführen.Otherwise a cast must be used to perform an explicit conversion. Betrachten Sie z.B. die folgenden beiden ushort-Variablen x und y:Consider, for example, the following two ushort variables x and y:

ushort x = 5, y = 12;  

Die folgende Zuweisungsanweisung erzeugt einen Kompilierfehler, da der arithmetische Ausdruck auf der rechten Seite des Zuweisungsoperators standardmäßig int ergibt.The following assignment statement will produce a compilation error, because the arithmetic expression on the right side of the assignment operator evaluates to int by default.

ushort z = x + y;   // Error: conversion from int to ushort  

Verwenden Sie eine Umwandlung, um dieses Problem zu lösen:To fix this problem, use a cast:

ushort z = (ushort)(x + y);   // OK: explicit conversion   

Es ist jedoch möglich, die folgenden Anweisungen zu verwenden, bei denen die Zielvariable über dieselbe oder eine größere Speichergröße verfügt:It is possible though to use the following statements, where the destination variable has the same storage size or a larger storage size:

int m = x + y;  
long n = x + y;  

Beachten Sie auch, dass es keine implizite Konvertierung von Gleitkomma-Datentypen zu ushort gibt.Notice also that there is no implicit conversion from floating-point types to ushort. 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:  
ushort x = 3.0;   
// OK -- explicit conversion:  
ushort y = (ushort)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 finden Sie unter Intregrale Datentypen in der C#-Sprachspezifikation.For more information, see Integral types in 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