ushort (Riferimenti per C#)
Aggiornamento: novembre 2007
La parola chiave ushort indica un tipo di dati integrale che memorizza valori in base alla dimensione e all'intervallo indicati nella seguente tabella.
Tipo |
Intervallo |
Dimensioni |
Tipo .NET Framework |
---|---|---|---|
ushort |
Da 0 a 65.535 |
Numero intero senza segno a 16 bit |
Valori letterali
È possibile dichiarare e inizializzare una variabile ushort come nell'esempio riportato di seguito:
ushort myShort = 65535;
Nella precedente dichiarazione il valore letterale integer 65535 viene convertito in modo implicito da int a ushort. Se il valore letterale integer è esterno all'intervallo consentito per ushort, viene generato un errore di compilazione.
Quando si chiamano metodi di overload, è necessario utilizzare un cast. Si considerino, ad esempio, i seguenti metodi di overload che utilizzano parametri ushort e int:
public static void SampleMethod(int i) {}
public static void SampleMethod(ushort s) {}
L'utilizzo del cast di ushort garantisce che venga chiamato il tipo corretto, ad esempio:
// Calls the method with the int parameter:
SampleMethod(5);
// Calls the method with the ushort parameter:
SampleMethod((ushort)5);
Conversioni
Si verifica una conversione implicita predefinita da ushort in int, uint, long, ulong, float, double o decimal.
Si verifica una conversione implicita predefinita da byte o char in ushort. In tutti gli altri casi è necessario ricorrere a un cast per eseguire una conversione esplicita. Si considerino, ad esempio, le due variabili ushort seguenti x e y:
ushort x = 5, y = 12;
L'istruzione di assegnazione che segue provocherà un errore di compilazione poiché, per impostazione predefinita, l'espressione aritmetica a destra dell'operatore di assegnazione restituisce int.
ushort z = x + y; // Error: conversion from int to ushort
Per correggere l'errore, utilizzare un cast:
ushort z = (ushort)(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;
Si noti inoltre che non esiste alcuna conversione implicita dai tipi a virgola mobile a ushort. L'istruzione seguente, ad esempio, genera un errore di compilazione, a meno che non venga utilizzato un cast esplicito:
// Error -- no implicit conversion from double:
ushort x = 3.0;
// OK -- explicit conversion:
ushort y = (ushort)3.0;
Per ulteriori 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#)