SByte データ型 (Visual Basic)

-128 から 127 までの符号付き 8 ビット (1 バイト) の整数を保持します。

Remarks

完全なデータ幅の Integer や半分のデータ幅の Short も必要としない整数値を格納するには、SByte データ型を使用します。 場合によっては、共通言語ランタイムで SByte 変数を緊密にパックし、メモリ消費を節約できる可能性があります。

SByte の既定値は 0 です。

リテラルの代入

SByte 変数を宣言し、10 進リテラル、16 進リテラル、8 進リテラル、または (Visual Basic 2017 以降) バイナリ リテラルを代入することによって初期化できます。

次の例では、整数 -102 を 10 進リテラル、16 進リテラル、バイナリ リテラルで表したものが、SByte 値に代入されています。 この例では、/removeintchecks コンパイラ スイッチを使用してコンパイルする必要があります。

Dim sbyteValue1 As SByte = -102
Console.WriteLine(sbyteValue1)

Dim sbyteValue4 As SByte = &H9A
Console.WriteLine(sbyteValue4)

Dim sbyteValue5 As SByte = &B1001_1010
Console.WriteLine(sbyteValue5)
' The example displays the following output:
'          -102
'          -102
'          -102

注意

16 進リテラルを表すにはプレフィックス &h または &H を使い、バイナリ リテラルを表すにはプレフィックス &b または &B を使い、8 進リテラルを表すにはプレフィックス &o または &O を使います。 10 進リテラルには、プレフィックスはありません。

Visual Basic 2017 以降では、次の例に示すように、アンダースコア文字 _ を桁区切り記号として使って読みやすくすることもできます。

Dim sbyteValue3 As SByte = &B1001_1010
Console.WriteLine(sbyteValue3)
' The example displays the following output:
'          -102

Visual Basic 15.5 以降では、プレフィックスと 16 進数、2 進数、または 8 進数の間に先頭の区切り記号としてアンダースコア文字 (_) を使用することもできます。 次に例を示します。

Dim number As SByte = &H_F9

アンダースコア文字を先頭の区切り記号として使用するには、以下の要素を Visual Basic プロジェクト (*.vbproj) ファイルに追加する必要があります。

<PropertyGroup>
  <LangVersion>15.5</LangVersion>
</PropertyGroup>

詳細については、「Visual Basic 言語バージョンの選択」を参照してください。

整数リテラルが SByte の範囲外にある場合 (つまり、SByte.MinValue より小さいか、SByte.MaxValue より大きい場合)、コンパイル エラーが発生します。 整数リテラルにサフィックスがない場合は、Integer が推定されます。 整数リテラルが Integer 型の範囲外の場合は、Long が推定されます。 つまり、前の例では、数値リテラル 0x9A0b10011010 は値が 156 の 32 ビット符号付き整数として解釈され、これは SByte.MaxValue を超えています。 SByte に 10 進数以外の整数を代入する次のようなコードを正常にコンパイルするには、次のいずれかの操作を行います。

  • /removeintchecks コンパイラ スイッチを使用してコンパイルすることにより、整数境界のチェックを無効にします。

  • SByte に代入するリテラル値を明示的に定義するには、型文字を使用します。 次の例では、負のリテラル Short 値を SByte に代入します。 負の数値の場合は、数値リテラルの上位ワードの上位ビットを設定する必要があることに注意してください。 この例の場合、これはリテラル Short 値のビット 15 です。

    Dim sByteValue1 As SByte = &HFF_9As
    Dim sByteValue2 As SByte = &B1111_1111_1001_1010s
    Console.WriteLine(sByteValue1)
    Console.WriteLine(sByteValue2)
    

プログラミングのヒント

  • CLS 準拠。 SByte データ型は共通言語仕様 (CLS) に含まれないため、CLS に準拠しているコードではそれを使用するコンポーネントを使用できません。

  • 拡大変換。 SByte データ型は、ShortIntegerLongDecimalSingle、および Double に拡大変換されます。 これは、System.OverflowException エラーを発生させることなく、これらの型のいずれかに SByte を変換できることを意味します。

  • 型宣言文字。 SByte には、リテラルの型文字も識別子の型文字も含まれません。

  • Framework のデータ型 .NET Framework において対応する型は、System.SByte 構造体です。

関連項目