共用方式為


SByte 資料類型 (Visual Basic)

保存帶正負號的 8 位元 (1 位元組) 整數,值的範圍從 -128 到 127。

備註

使用 SByte 資料類型來包含整數值,這些值不需要 Integer 的完整資料寬度,或甚至 Short 的半資料寬度。 在某些情況下,Common Language Runtime 或許能夠將您的 SByte 變數緊密封裝在一起,並節省記憶體耗用量。

SByte 的預設值為 0。

常值指派

您可以針對 SByte 變數指派十進位常值、十六進位常值、八進位常值或二進位常值 (自 Visual Basic 2017 起),以將其宣告和初始化。

在下列範例中,以十進位、十六進位和二進位常值表示的 -102 整數,會指派給 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

注意

您可以使用 &h&H 前置詞來表示十六進位常值,以 &b&B 前置詞來表示二進位常值,以 &o&O 前置詞來表示八進位常值。 十進位常值沒有前置詞。

自 Visual Basic 2017 開始,您也可以使用底線字元 (_) 作為數字分隔符號,以提升可讀性,如下列範例所示。

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

從 Visual Basic 15.5 開始,您也可以使用底線字元 (_) 作為前置字元與十六進位、二進位或八進位數字之間的前置分隔符號。 例如:

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 解譯為 32 位元帶正負號的整數值 156,而該值已超過 SByte.MaxValue。 若要成功編譯像這樣將非十進位整數指派給 SByte 的程式碼,您可以執行下列動作之一:

  • 使用 /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 資料類型不屬於 Common Language Specification (CLS),因此符合 CLS 規範的程式碼無法取用使用該資料類型的元件。

  • 擴展。 SByte 資料類型可擴展為 ShortIntegerLongDecimalSingleDouble。 這表示,您可以將 SByte 轉換成這些類型的任何一種,而不會發生 System.OverflowException 錯誤。

  • 類型字元。 SByte 沒有常值型別字元或識別項型別字元。

  • Framework 類型。 在 .NET Framework 中對應的類型為 System.SByte 結構。

另請參閱