sbyte (C#-Referenz)
Das sbyte-Schlüsselwort kennzeichnet einen ganzzahligen Typ, in dem Werte entsprechend der Größe und dem Bereich in der folgenden Tabelle gespeichert werden.
type |
Bereich |
Größe |
.NET Framework-Typ |
---|---|---|---|
sbyte |
-128 bis 127 |
Ganze 8-Bit-Zahl mit Vorzeichen |
Literale
Sie können auf diese Weise eine sbyte-Variable deklarieren und initialisieren:
sbyte sByte1 = 127;
In der vorangehenden Deklaration wird das Ganzzahlliteral 127 implizit von int in sbyte konvertiert. Wenn der Bereich von sbyte vom Ganzzahlliteral überschritten wird, tritt ein Kompilierungsfehler auf.
Beim Aufrufen überladener Methoden muss eine Typumwandlung erfolgen. Betrachten Sie z. B. die folgenden überladenen Methoden, die den sbyte-Parameter und den int-Parameter verwenden:
public static void SampleMethod(int i) {}
public static void SampleMethod(sbyte b) {}
Die Verwendung der sbyte-Typumwandlung gewährleistet, dass der richtige Typ aufgerufen wird. Beispiel:
// Calling the method with the int parameter:
SampleMethod(5);
// Calling the method with the sbyte parameter:
SampleMethod((sbyte)5);
Konvertierungen
Es erfolgt eine vordefinierte implizite Konvertierung von sbyte in short, int, long, float, double oder decimal.
Es ist nicht möglich, numerische Typen mit höherer Speichergröße, die keine Literale sind, implizit in sbyte zu konvertieren. (Informationen zu den Speichergrößen ganzzahliger Typen finden Sie unter Tabelle ganzzahliger Typen (C#-Referenz).) Betrachten Sie beispielsweise die folgenden beiden sbyte-Variablen x und y:
sbyte x = 10, y = 20;
Die folgende Zuweisungsanweisung generiert einen Kompilierungsfehler, da der arithmetische Ausdruck auf der rechten Seite des Zuweisungsoperators standardmäßig den Wert int annimmt.
sbyte z = x + y; // Error: conversion from int to sbyte
Um dieses Problem zu beheben, wandeln Sie den Ausdruck wie im folgenden Beispiel gezeigt um:
sbyte z = (sbyte)(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:
sbyte x = 10, y = 20;
int m = x + y;
long n = x + y;
Beachten Sie auch, dass Gleitkommatypen nicht implizit in sbyte konvertiert werden. Durch die folgende Anweisung wird z. B. ein Compilerfehler erzeugt, sofern keine explizite Typumwandlung stattfindet:
sbyte x = 3.0; // Error: no implicit conversion from double
sbyte y = (sbyte)3.0; // OK: explicit conversion
Weitere Informationen zu arithmetischen Ausdrücken mit 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)