short (Riferimenti per C#)
Aggiornamento: novembre 2007
La parola chiave short denota un tipo di dati integrale che archivia valori in base alla dimensione e all'intervallo indicati nella seguente tabella.
Tipo |
Intervallo |
Dimensioni |
Tipo .NET Framework |
---|---|---|---|
short |
Da -32,768 a 32,767 |
Numero intero con segno a 16 bit |
Valori letterali
È possibile dichiarare e inizializzare una variabile short come nell'esempio riportato di seguito.
short x = 32767;
Nella precedente dichiarazione il valore letterale integer 32767 è convertito in modo implicito da int a short. Se il valore letterale integer ha dimensioni troppo grandi per uno spazio di memoria short, verrà generato un errore di compilazione.
È necessario utilizzare un cast quando si chiamano metodi di overload. Si considerino, ad esempio, i seguenti metodi di overload che utilizzano parametri short e int:
public static void SampleMethod(int i) {}
public static void SampleMethod(short s) {}
L'utilizzo del cast di short garantisce che venga chiamato il tipo corretto, ad esempio:
SampleMethod(5); // Calling the method with the int parameter
SampleMethod((short)5); // Calling the method with the short parameter
Conversioni
Si verifica una conversione implicita predefinita da short in int, long, float, double o decimal.
Non è possibile convertire in modo implicito in short tipi numerici non letterali che necessitano di maggiore spazio in memoria. Per informazioni sullo spazio necessario per l'archiviazione dei tipi integrali, vedere Tabella dei tipi integrali (Riferimenti per C#). Si considerino, ad esempio, le due variabili short seguenti x e y:
short x = 5, y = 12;
L'istruzione di assegnazione riportata di seguito provocherà un errore di compilazione, poiché, per impostazione predefinita, l'espressione aritmetica a destra dell'operatore di assegnazione restituisce int.
short z = x + y; // Error: no conversion from int to short
Per correggere l'errore, utilizzare un cast:
short z = (short)(x + y); // OK: explicit conversion
È tuttavia possibile utilizzare le seguenti istruzioni, in cui la variabile di destinazione ha dimensioni di archiviazione uguali o superiori:
int m = x + y;
long n = x + y;
Non esiste alcuna conversione implicita dai tipi a virgola mobile a short. L'istruzione seguente, ad esempio, genera un errore di compilazione, a meno che non venga utilizzato un cast esplicito:
short x = 3.0; // Error: no implicit conversion from double
short y = (short)3.0; // OK: explicit conversion
Per informazioni sulle espressioni aritmetiche con tipi a virgola mobile e tipi integrali, vedere float e double.
Per ulteriori informazioni sulle regole di conversione numerica implicita, vedere Tabella delle conversioni numeriche implicite (Riferimenti per C#).
Specifiche del linguaggio C#
Per ulteriori informazioni, vedere le sezioni riportate di seguito in Specifiche del linguaggio C#:
1.3 Tipi e variabili
4.1.5 Tipi integrali
Vedere anche
Concetti
Riferimenti
Tabella dei tipi integrali (Riferimenti per C#)
Tabella dei tipi incorporati (Riferimenti per C#)
Tabella delle conversioni numeriche implicite (Riferimenti per C#)
Tabella delle conversioni numeriche esplicite (Riferimenti per C#)