Поделиться через


Тип данных SByte (Visual Basic)

Содержит 8-разрядные (1-байтовые) целые числа, которые варьируются в значении от -128 до 127.

Замечания

SByte Используйте тип данных, чтобы содержать целые значения, которые не требуют полной ширины Integer данных или даже половины ширины Shortданных. В некоторых случаях среда CLR может тесно упаковать 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 диапазона типа, выводится целочисленный литерал. Это означает, что в предыдущих примерах числовые литералы 0x9A и 0b10011010 интерпретируются как 32-разрядные целые числа со знаком со значением 156, превышающее SByte.MaxValueзначение. Чтобы успешно скомпилировать код, который назначает целое число SByte, отличное от десятичного целого числа, можно выполнить одно из следующих действий:

  • Отключите целые границы, скомпилируя с помощью переключателя компилятора /removeintchecks .

  • Используйте символ типа, чтобы явно определить литеральное значение, которое требуется назначитьSByte. В следующем примере присваивается отрицательное литеральное Short значение SByte. Обратите внимание, что для отрицательных чисел необходимо задать бит высокого порядка слова числового литерала. В нашем примере это бит 15 литерального Short значения.

    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 данных расширяется до Short, Integer, Long, Decimalи SingleDouble. Это означает, что вы можете преобразовать SByte в любой из этих типов без возникновения System.OverflowException ошибки.

  • Тип символов.SByte не имеет символа литерального типа или символа типа идентификатора.

  • Тип платформы. В .NET Framework данный тип соответствует структуре System.SByte.

См. также