sbyte (C# リファレンス)
sbyte キーワードは、次の表に示されたサイズと範囲に従って値を格納する整数型を表します。
種類 |
範囲 |
サイズ |
.NET Framework 型 |
---|---|---|---|
sbyte |
-128 ~ 127 |
符号付き 8 ビット整数 |
リテラル
sbyte 変数の宣言と初期化は次のようにして行うことができます。
sbyte sByte1 = 127;
上のように宣言すると、整数リテラル 127 は暗黙的に int から sbyte に変換されます。整数リテラルが sbyte の範囲を超えると、コンパイル エラーになります。
オーバーロードされたメソッドを呼び出す場合は、キャストを使用する必要があります。たとえば、sbyte パラメーターと int パラメーターを使用したオーバーロードされたメソッドがあるとします。
public static void SampleMethod(int i) {}
public static void SampleMethod(sbyte b) {}
sbyte キャストを使用すると、正しい型が呼び出されます。次に例を示します。
// Calling the method with the int parameter:
SampleMethod(5);
// Calling the method with the sbyte parameter:
SampleMethod((sbyte)5);
変換
sbyte から short、int、long、float、double、decimal への暗黙の型変換が組み込まれています。
記憶サイズがより大きいリテラル以外の数値型は、sbyte への暗黙の型変換ができません。整数型の記憶サイズについては、「整数型の一覧表 (C# リファレンス)」を参照してください。たとえば、2 つの sbyte 変数 x と y があるとします。
sbyte x = 10, y = 20;
次の代入ステートメントは、代入演算子の右側にある算術式が既定で int に評価されるため、コンパイル エラーになります。
sbyte z = x + y; // Error: conversion from int to sbyte
この問題を解決するには、次の例のように式をキャストします。
sbyte z = (sbyte)(x + y); // OK: explicit conversion
ただし、次のステートメントは使用できます。このステートメントでは、変換先の変数の記憶サイズは元のサイズ以上になります。
sbyte x = 10, y = 20;
int m = x + y;
long n = x + y;
また、浮動小数点型から sbyte への暗黙の型変換が行われないことに注意してください。たとえば、次のステートメントは、明示的なキャストを使用しない場合、コンパイラ エラーになります。
sbyte x = 3.0; // Error: no implicit conversion from double
sbyte y = (sbyte)3.0; // OK: explicit conversion
浮動小数点型と整数型の混在する算術式の詳細については、「float (C# リファレンス)」と「double (C# リファレンス)」を参照してください。
暗黙の数値変換規則の詳細については、「暗黙的な数値変換の一覧表 (C# リファレンス)」を参照してください。
C# 言語仕様
詳細については、「C# 言語仕様」を参照してください。言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。