SByte (referência de C#)
O sbyte palavra-chave indica o tipo integral que armazena valores de acordo com o tamanho e o intervalo, mostrado na tabela a seguir.
Tipo |
Intervalo |
Tamanho |
Tipo .NET Framework |
---|---|---|---|
sbyte |
-128 a 127 |
Inteiro assinado de 8 bits |
Literais
Você pode declarar e inicializar um sbyte variável dessa maneira:
sbyte sByte1 = 127;
A declaração anterior, o inteiro literal 127 implicitamente é convertido de int para sbyte.Se a literal inteira excede o intervalo de sbyte, ocorrerá um erro de compilação.
Uma conversão deve ser usada quando chamada sobrecarregado métodos.Considere, por exemplo, o seguinte sobrecarregado métodos que usam sbyte e int parâmetros:
public static void SampleMethod(int i) {}
public static void SampleMethod(sbyte b) {}
Usando o sbyte cast garante que o tipo correto é chamado, por exemplo:
// Calling the method with the int parameter:
SampleMethod(5);
// Calling the method with the sbyte parameter:
SampleMethod((sbyte)5);
Conversões
Há uma conversão implícita predefinida de sbyte para curto, int, longo, float, double, ou decimal.
Você não pode converter implicitamente nonliteral tipos numéricos de maior tamanho de armazenamento para sbyte (consulte Tabela de tipos integral (referência de C#) para os tamanhos de armazenamento dos tipos integrais).Considere, por exemplo, os dois seguintes sbyte variáveis de x e y:
sbyte x = 10, y = 20;
A seguinte instrução de atribuição produzirá um erro de compilação, porque a expressão aritmética no lado direito do operador de atribuição é avaliada como int por padrão.
sbyte z = x + y; // Error: conversion from int to sbyte
Para corrigir esse problema, converta a expressão, como no exemplo a seguir:
sbyte z = (sbyte)(x + y); // OK: explicit conversion
No entanto é possível usar as instruções a seguir, onde a variável de destino tem o mesmo tamanho de armazenamento ou um tamanho maior de armazenamento:
sbyte x = 10, y = 20;
int m = x + y;
long n = x + y;
Observe também que não há nenhuma conversão implícita de tipos de ponto flutuante para sbyte.Por exemplo, a instrução a seguir gera um erro do compilador, a menos que seja usada uma conversão explícita:
sbyte x = 3.0; // Error: no implicit conversion from double
sbyte y = (sbyte)3.0; // OK: explicit conversion
Para obter informações sobre expressões aritméticas com tipos mistos de ponto flutuante e tipos integrais, consulte float e double.
Para obter mais informações sobre regras de conversão numérica implícito, consulte o Tabela de conversões numérico implícito (referência de C#).
Especificação da linguagem C#
Para obter mais informações, consulte Especificação de linguagem do C# A especificação da linguagem é a fonte definitiva para a sintaxe e o uso da linguagem C#.
Consulte também
Referência
Tabela de tipos integral (referência de C#)
Tabela de tipos internos (referência de C#)
Tabela de conversões numérico implícito (referência de C#)
Tabela de conversões numérico explícita (referência de C#)