short (C#-Referenz)

short kennzeichnet einen ganzzahligen Datentyp, der Werte anhand der Größe und des Bereichs speichert, die in der folgenden Tabelle gezeigt werden.

Typ Bereich Größe .NET Framework-Typ
short –32.768 bis 32.767 Ganze 16-Bit-Zahl mit Vorzeichen System.Int16

Literale

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. Wenn das Ganzzahlliteral außerhalb des Bereichs von short liegt, d.h., wenn es kleiner als Int16.MinValue oder größer als Int16.MaxValue ist, tritt ein Kompilierungsfehler auf.

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.

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

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

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

Überladungsauflösung des Compiler

Beim Aufrufen überladener Methoden muss eine Typumwandlung durchgeführt werden. Betrachten Sie z.B. die folgenden überladenen Methoden, die die Parameter short und int verwenden:

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

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

Konvertierungen

Es gibt eine vordefinierte implizite Konvertierung von short in int, long, float, double oder 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). Betrachten Sie z.B. die folgenden beiden short-Variablen x und 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.

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

Verwenden Sie eine Umwandlung, um dieses Problem zu lösen:

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:

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

Es gibt keine implizite Konvertierung von Gleitkommadatentypen zu short. Die folgende Anweisung erzeugt z.B. einen Compilerfehler, außer es wird eine explizite Umwandlung verwendet:

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.

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

Int16
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