SByte 数据类型 (Visual Basic)

保存 8 位(1 字节)带符号整数,值的范围为 -128 到 127。

注解

使用 SByte 数据类型可包含不需要 Integer 的完整数据宽度甚至 Short 的半数据宽度的整数值。 在某些情况下,公共语言运行时可以将 SByte 变量紧密地打包在一起,并节省内存消耗。

SByte 的默认值为 0。

文本赋值

可以通过为其分配十进制文本、十六进制文本、八进制文本或(从 Visual Basic 2017 开始)二进制文本来声明和初始化 SByte 变量。

在以下示例中,表示为十进制、十六进制和二进制文本且等于 -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 被解释为值为 156 的 32 位带符号整数,该值超过了 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 数据类型不是公共语言规范 (CLS) 的一部分,因此符合 CLS 的代码不能使用使用它的组件。

  • Widening。 SByte 数据类型加宽到 ShortIntegerLongDecimalSingleDouble。 这意味着,可以将 SByte 转换为这些类型中的任意类型,而不会遇到 System.OverflowException 错误。

  • 类型字符。 SByte 没有文本类型字符或标识符类型字符。

  • Framework 类型。 .NET Framework 中的对应类型是 System.SByte 结构。

另请参阅