short (C#-Referenz)short (C# Reference)

short kennzeichnet einen ganzzahligen Datentyp, der Werte anhand der Größe und des Bereichs speichert, die in der folgenden Tabelle gezeigt werden.short denotes an integral data 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
short –32.768 bis 32.767-32,768 to 32,767 Ganze 16-Bit-Zahl mit VorzeichenSigned 16-bit integer System.Int16

LiteraleLiterals

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

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

short shortValue1 = 1034;
Console.WriteLine(shortValue1);

short shortValue2 = 0x040A;
Console.WriteLine(shortValue2);

short shortValue3 = 0b0100_00001010;
Console.WriteLine(shortValue3);
// The example displays the following output:
//          1034
//          1034
//          1034

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.

short shortValue1 = 1_034;
Console.WriteLine(shortValue1);

short shortValue2 = 0b00000100_00001010;
Console.WriteLine(shortValue2);

short shortValue3 = 0b_00000100_00001010;       // C# 7.2 onwards
Console.WriteLine(shortValue3);
// The example displays the following output:
//          1034
//          1034
//          1034

Überladungsauflösung des CompilerCompiler overload resolution

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

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

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

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

KonvertierungenConversions

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

Sie können numerische nonliteral-Typen einer größeren Speichergröße nicht implizit in short konvertieren (siehe Tabelle ganzzahliger Typen für die Speichergrößen ganzzahliger Typen).You cannot implicitly convert nonliteral numeric types of larger storage size to short (see Integral Types Table for the storage sizes of integral types). Betrachten Sie z.B. die folgenden beiden short-Variablen x und y:Consider, for example, the following two short variables x and y:

short x = 5, y = 12;  

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

short z  = x + y;        // Compiler error CS0266: no conversion from int to short

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

short z  = (short)(x + y);   // Explicit conversion

Es ist jedoch auch möglich, die folgenden Anweisungen zu verwenden, bei denen die Zielvariable über dieselbe oder eine größere Speichergröße verfügt:It is also possible 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;  

Es gibt keine implizite Konvertierung von Gleitkommadatentypen zu short.There is no implicit conversion from floating-point types to short. 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:

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

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. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auchSee Also

Int16
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