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 os métodos de sobrecarga de chamada. Por exemplo, considere 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 Integral Types Table (C# Reference) 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 instrução de atribuição a seguir 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, de onde a variável de destino tem o mesmo tamanho de armazenamento ou um tamanho maior do 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 integral, consulte float e double.
Para obter mais informações sobre regras de conversão numérica implícita, consulte o Implicit Numeric Conversions Table (C# Reference).
Especificação da linguagem C#
Para obter mais informações, consulte C# Language Specification A especificação de linguagem é a fonte definitiva para a sintaxe e o uso de C#.
Consulte também
Referência
Integral Types Table (C# Reference)
Built-In Types Table (C# Reference)
Implicit Numeric Conversions Table (C# Reference)
Explicit Numeric Conversions Table (C# Reference)