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

Содержит 8-битные (1-байтные) целые числа со знаком в диапазоне от-128 до 127.Holds signed 8-bit (1-byte) integers that range in value from -128 through 127.

КомментарииRemarks

Используйте SByte тип данных для хранения целочисленных значений, не требующих полной ширины данных Integer или даже половины ширины данных Short .Use the SByte data type to contain integer values that do not require the full data width of Integer or even the half data width of Short. В некоторых случаях среда CLR может SByte одновременно упаковать переменные и сэкономить потребление памяти.In some cases, the common language runtime might be able to pack your SByte variables closely together and save memory consumption.

Значение по умолчанию для типа SByte — 0.The default value of SByte is 0.

Присваивания литераловLiteral assignments

Вы можете объявить и инициализировать SByte переменную, назначив ей десятичный литерал, шестнадцатеричный литерал, Восьмеричный литерал или (начиная с Visual Basic 2017) двоичный литерал.You can declare and initialize an SByte variable by assigning it a decimal literal, a hexadecimal literal, an octal literal, or (starting with Visual Basic 2017) a binary literal.

В следующем примере целые числа, равные-102, представленные в виде десятичных, шестнадцатеричных и двоичных литералов, присваиваются SByte значениям.In the following example, integers equal to -102 that are represented as decimal, hexadecimal, and binary literals are assigned to SByte values. В этом примере требуется компилировать с /removeintchecks параметром компилятора.This example requires that you compile with the /removeintchecks compiler switch.

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 обозначить Восьмеричный литерал.You use the prefix &h or &H to denote a hexadecimal literal, the prefix &b or &B to denote a binary literal, and the prefix &o or &O to denote an octal literal. У десятичных литералов префиксов нет.Decimal literals have no prefix.

Начиная с Visual Basic 2017, можно также использовать символ подчеркивания () в _ качестве разделителя цифр, чтобы улучшить удобочитаемость, как показано в следующем примере.Starting with Visual Basic 2017, you can also use the underscore character, _, as a digit separator to enhance readability, as the following example shows.

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

Начиная с Visual Basic 15,5, можно также использовать символ подчеркивания () в _ качестве начального разделителя между префиксом и шестнадцатеричными, двоичными или восьмеричными цифрами.Starting with Visual Basic 15.5, you can also use the underscore character (_) as a leading separator between the prefix and the hexadecimal, binary, or octal digits. Пример:For example:

Dim number As SByte = &H_F9

Чтобы использовать символ подчеркивания в качестве начального разделителя, нужно добавить в файл проекта Visual Basic (*.vbproj) следующий элемент:To use the underscore character as a leading separator, you must add the following element to your Visual Basic project (*.vbproj) file:

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

Для получения дополнительной информации см.For more information see setting the Visual Basic language version.

Если целочисленный литерал выходит за пределы диапазона SByte (то есть, если он меньше SByte.MinValue или больше SByte.MaxValue), возникает ошибка компиляции.If the integer literal is outside the range of SByte (that is, if it is less than SByte.MinValue or greater than SByte.MaxValue, a compilation error occurs. Если у целочисленного литерала нет суффикса, выводится целое число .When an integer literal has no suffix, an Integer is inferred. Если целочисленный литерал находится за пределами диапазона Integer типа, выводится значение Long .If the integer literal is outside the range of the Integer type, a Long is inferred. Это означает, что в предыдущих примерах числовые литералы и обрабатываются 0x9A 0b10011010 как 32-разрядные целые числа со знаком со значением 156, что превышает SByte.MaxValue .This means that, in the previous examples, the numeric literals 0x9A and 0b10011010 are interpreted as 32-bit signed integers with a value of 156, which exceeds SByte.MaxValue. Чтобы успешно скомпилировать код, подобный этому, который присваивает недесятичное целое число SByte , можно выполнить одно из следующих действий.To successfully compile code like this that assigns a non-decimal integer to an SByte, you can do either of the following:

  • Отключает проверку целочисленных границ путем компиляции с /removeintchecks переключателем компилятора.Disable integer bounds checks by compiling with the /removeintchecks compiler switch.

  • Используйте символ типа , чтобы явно определить литеральное значение, которое нужно присвоить SByte .Use a type character to explicitly define the literal value that you want to assign to the SByte. В следующем примере для переназначается отрицательное литеральное Short значение SByte .The following example assigns a negative literal Short value to an SByte. Обратите внимание, что для отрицательных чисел необходимо задать старшие разрядные слова в числовом литерале с высоким порядком.Note that, for negative numbers, the high-order bit of the high-order word of the numeric literal must be set. В нашем примере это бит 15 литерального Short значения.In the case of our example, this is bit 15 of the literal Short value.

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

Советы по программированиюProgramming tips

  • Соответствие CLS.CLS Compliance. SByteТип данных не является частью спецификации CLS, поэтому CLS-совместимый код не может использовать компонент, который его использует.The SByte data type is not part of the Common Language Specification (CLS), so CLS-compliant code cannot consume a component that uses it.

  • Расширяющие.Widening. SByteТип данных расширяется до Short , Integer ,,, Long Decimal Single и Double .The SByte data type widens to Short, Integer, Long, Decimal, Single, and Double. Это означает, что можно преобразовать SByte в любой из этих типов без возникновения System.OverflowException ошибки.This means you can convert SByte to any of these types without encountering a System.OverflowException error.

  • Символы типа.Type Characters. SByteне имеет символа типа литерала или символа типа идентификатора.SByte has no literal type character or identifier type character.

  • Тип Framework.Framework Type. В .NET Framework данный тип соответствует структуре System.SByte.The corresponding type in the .NET Framework is the System.SByte structure.

См. также разделSee also