short (C#-Referenz)
Das short-Schlüsselwort kennzeichnet einen ganzzahligen Datentyp, in dem Werte entsprechend der Größe und dem Bereich in der folgenden Tabelle gespeichert werden.
type |
Bereich |
Größe |
.NET Framework-Typ |
---|---|---|---|
short |
-32.768 bis 32.767 |
Ganze 16-Bit-Zahl mit Vorzeichen |
Literale
Eine short-Variable kann wie im folgenden Beispiel deklariert und initialisiert werden:
short x = 32767;
In der vorangehenden Deklaration wird das Ganzzahlliteral 32767 implizit von int in short konvertiert. Wenn das Ganzzahlliteral zu groß für einen short-Speicherbereich ist, tritt ein Kompilierungsfehler auf.
Beim Aufrufen überladener Methoden muss eine Typumwandlung erfolgen. Betrachten Sie z. B. die folgenden überladenen Methoden, die den short-Parameter und den int-Parameter verwenden:
public static void SampleMethod(int i) {}
public static void SampleMethod(short s) {}
Die Verwendung der short-Typumwandlung gewährleistet, dass der richtige Typ aufgerufen wird. Beispiel:
SampleMethod(5); // Calling the method with the int parameter
SampleMethod((short)5); // Calling the method with the short parameter
Konvertierungen
Es erfolgt eine vordefinierte implizite Konvertierung von short in int, long, float, double oder decimal.
Es ist nicht möglich, numerische Typen mit höherer Speichergröße, die keine Literale sind, implizit in short zu konvertieren. (Informationen zu den Speichergrößen ganzzahliger Typen finden Sie unter Tabelle ganzzahliger Typen (C#-Referenz).) Betrachten Sie z. B. die beiden folgenden 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 den Wert int annimmt.
short z = x + y; // Error: no conversion from int to short
Verwenden Sie zur Problembehebung eine Typumwandlung:
short z = (short)(x + y); // OK: explicit conversion
Hier können jedoch die folgenden Anweisungen verwendet werden, bei denen die Zielvariable dieselbe oder eine höhere Speichergröße aufweist:
int m = x + y;
long n = x + y;
Gleitkommatypen werden nicht implizit in short konvertiert. Durch die folgende Anweisung wird z. B. ein Compilerfehler erzeugt, sofern keine explizite Typumwandlung stattfindet:
short x = 3.0; // Error: no implicit conversion from double
short y = (short)3.0; // OK: explicit conversion
Weitere Informationen über arithmetische Ausdrücke aus Gleitkomma- und ganzzahligen Typen finden Sie unter float und double.
Weitere Informationen zu impliziten numerischen Konvertierungsregeln finden Sie unter Tabelle für implizite numerische Konvertierungen (C#-Referenz).
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in der C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.
Siehe auch
Referenz
Tabelle ganzzahliger Typen (C#-Referenz)
Tabelle integrierter Typen (C#-Referenz)
Tabelle für implizite numerische Konvertierungen (C#-Referenz)
Tabelle für explizite numerische Konvertierungen (C#-Referenz)