curto (referência de C#)
O short palavra-chave denota um tipo de dados integral que armazena valores de acordo com o tamanho e o intervalo, mostrado na tabela a seguir.
Tipo |
Intervalo |
Tamanho |
Tipo .NET Framework |
---|---|---|---|
short |
-32.768 a 32.767 |
Inteiro assinado de 16 bits |
Literais
Você pode declarar e inicializar um short variável semelhante ao exemplo:
short x = 32767;
Na declaração precedente, a literal inteira 32767 é convertido implicitamente de int para short.Se a literal inteira não cabe em um short o local de armazenamento, um erro de compilação ocorrerá.
Uma conversão deve ser usada quando chamada sobrecarregado métodos.Considere, por exemplo, o seguinte sobrecarregado métodos que usam short e int parâmetros:
public static void SampleMethod(int i) {}
public static void SampleMethod(short s) {}
Usando o short cast garante que o tipo correto é chamado, por exemplo:
SampleMethod(5); // Calling the method with the int parameter
SampleMethod((short)5); // Calling the method with the short parameter
Conversões
Há uma conversão implícita predefinida de short para int, longo, float, double, ou decimal.
Você não pode converter implicitamente nonliteral tipos numéricos de maior tamanho de armazenamento para short (consulte Tabela de tipos integral (referência de C#) para os tamanhos de armazenamento dos tipos integrais).Considere, por exemplo, os dois seguintes short variáveis de x e y:
short x = 5, y = 12;
A instrução de atribuição a seguir gerará um erro de compilação, porque a expressão aritmética do operador de atribuição no lado direito é avaliada, por padrão, como int.
short z = x + y; // Error: no conversion from int to short
Para corrigir esse problema, use um cast:
short z = (short)(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:
int m = x + y;
long n = x + y;
Não há nenhuma conversão implícita de tipos de ponto flutuante para short.Por exemplo, a instrução a seguir gera um erro do compilador, a menos que seja usada uma conversão explícita:
short x = 3.0; // Error: no implicit conversion from double
short y = (short)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#)