Tipo de datos SByte (Visual Basic)
Contiene enteros de 8 bits (1 byte) con signo cuyo valor oscila entre -128 y 127.
Comentarios
Use el tipo de datos SByte
para contener valores enteros que no requieren el ancho de datos completo de Integer
o incluso la mitad del ancho de datos de Short
. En algunos casos, es posible que Common Language Runtime pueda empaquetar las variables SByte
estrechamente juntas y ahorrar en el consumo de la memoria.
El valor predeterminado de SByte
es 0.
Asignaciones de literales
Puede declarar e inicializar una variable SByte
si la asigna a un literal decimal, un literal hexadecimal, un literal octal o (a partir de Visual Basic 2017) un literal binario.
En el ejemplo siguiente, los enteros que equivalen a -102 que se representan como literales binarios, hexadecimales y decimales se asignan a valores SByte
. En este ejemplo, es necesario compilar con el modificador del compilador /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
Nota
Use el prefijo &h
o &H
para denotar un literal hexadecimal, el prefijo &b
o &B
para denotar un literal binario y el prefijo &o
o &O
para denotar un literal octal. Los literales decimales no tienen prefijo.
A partir de Visual Basic 2017, también puede usar el carácter de subrayado, _
, como un separador de dígitos para mejorar la legibilidad, tal como se muestra en el ejemplo siguiente.
Dim sbyteValue3 As SByte = &B1001_1010
Console.WriteLine(sbyteValue3)
' The example displays the following output:
' -102
A partir de Visual Basic 15.5 también puede usar el carácter de subrayado (_
) como separador inicial entre el prefijo y los dígitos hexadecimales, binarios u octales. Por ejemplo:
Dim number As SByte = &H_F9
Para usar el carácter de subrayado como separador inicial, debe agregar el elemento siguiente al archivo del proyecto de Visual Basic (*.vbproj):
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Para más información, consulte Selección de la versión del lenguaje de Visual Basic.
Si el literal entero está fuera del intervalo de SByte
(es decir, si es inferior a SByte.MinValue o mayor que SByte.MaxValue, se produce un error de compilación. Cuando un literal entero no tiene ningún sufijo, se deduce Integer. Si el literal entero está fuera del rango del tipo Integer
, se deduce Long. Esto significa que, en los ejemplos anteriores, los literales numéricos 0x9A
y 0b10011010
se interpretan como enteros con signo de 32 bits con un valor de 156, que supera SByte.MaxValue. Para compilar correctamente código como este que asigna un entero no decimal a un SByte
, puede realizar una de estas acciones:
Para deshabilitar las comprobaciones de límites de enteros, compile con el modificador del compilador
/removeintchecks
.Use un carácter de tipo para definir explícitamente el valor literal que quiere asignar a
SByte
. En el ejemplo siguiente, se asigna un valor literalShort
negativo aSByte
. Tenga en cuenta que, para números negativos, se debe establecer el bit de orden superior de la palabra de orden superior del literal numérico. En el caso del ejemplo en cuestión, este es el bit 15 del valor literalShort
.Dim sByteValue1 As SByte = &HFF_9As Dim sByteValue2 As SByte = &B1111_1111_1001_1010s Console.WriteLine(sByteValue1) Console.WriteLine(sByteValue2)
sugerencias de programación
Conformidad con CLS. El tipo de datos
SByte
no forma parte de Common Language Specification (CLS), por lo que el código conforme a CLS no puede consumir un componente que lo utilice.Ampliación. El tipo de datos
SByte
se amplía aShort
,Integer
,Long
,Decimal
,Single
yDouble
. Esto significa que puede convertirSByte
en cualquiera de estos tipos sin que se produzca un error System.OverflowException.Caracteres de tipo.
SByte
no tiene caracteres de tipo literal ni caracteres de tipo identificador.Tipo de Framework. El tipo correspondiente en .NET Framework es la estructura System.SByte.