Tabelle di conversione dei tipi in .NET
Si parla di conversione verso un tipo di dati più grande quando un valore di un certo tipo viene convertito in un altro tipo di dimensioni identiche o maggiori. Si parla di conversione verso un tipo di dati più piccolo quando un valore di un certo tipo viene convertito in un valore di un altro tipo di dimensioni inferiori. Le tabelle in questo argomento illustrano i comportamenti di entrambi i tipi di conversioni.
Conversioni che supportano un maggior numero di dati
Nella tabella seguente sono elencate le conversioni verso un tipo di dati più grande che possono essere eseguite senza la perdita di informazioni.
Type | Conversione senza perdita di dati in |
---|---|
Byte | UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
SByte | Int16, Int32, Int64, Single, Double, Decimal |
Int16 | Int32, Int64, Single, Double, Decimal |
UInt16 | UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
Char | UInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
Int32 | Int64, Double, Decimal |
UInt32 | Int64, UInt64, Double, Decimal |
Int64 | Decimal |
UInt64 | Decimal |
Single | Double |
Alcune conversioni verso il tipo di dati più grande Single o Double possono causare una perdita di precisione. Nella tabella seguente sono elencate le conversioni verso un tipo di dati più grande che possono generare una perdita di informazioni.
Type | Conversione in |
---|---|
Int32 | Single |
UInt32 | Single |
Int64 | Single, Double |
UInt64 | Single, Double |
Decimal | Single, Double |
Conversioni che supportano un minor numero di dati
Alcune conversioni verso il tipo di dati più piccolo Single o Double possono causare una perdita di informazioni. Se il tipo di destinazione non è in grado di rappresentare in modo appropriato l'ordine di grandezza dell'origine, il tipo risultante viene impostato sulla costante PositiveInfinity
o NegativeInfinity
. PositiveInfinity
è il risultato della divisione di un numero positivo per zero e viene restituito anche quando il valore di un tipo Single o Double supera il valore del campo MaxValue
. NegativeInfinity
è il risultato della divisione di un numero negativo per zero e viene restituito anche quando il valore di un tipo Single o Double è minore del valore del campo MinValue
. Una conversione da un tipo DoubleDouble a un tipo Single potrebbe avere come risultato un valore PositiveInfinity
o NegativeInfinity
.
Una conversione verso un tipo di dati più piccolo può generare una perdita di informazioni anche per altri tipi di dati. Viene tuttavia generato un evento OverflowException se il valore di un tipo da convertire non rientra nell'intervallo specificato dai campi MaxValue
e MinValue
del tipo di destinazione e il processo di conversione viene controllato dal runtime per poter assicurare che il valore del tipo di destinazione non superi MaxValue
o MinValue
. Le conversioni eseguite tramite la classe System.Convert vengono sempre controllate in questo modo.
Nella tabella seguente sono elencate le conversioni che generano un evento OverflowException tramite System.Convert o qualsiasi conversione controllata se il valore del tipo convertito non rientra nell'intervallo specificato per il tipo risultante.
Type | Conversione in |
---|---|
Byte | SByte |
SByte | Byte, UInt16, UInt32, UInt64 |
Int16 | Byte, SByte, UInt16 |
UInt16 | Byte, SByte, Int16 |
Int32 | Byte, SByte, Int16, UInt16,UInt32 |
UInt32 | Byte, SByte, Int16, UInt16, Int32 |
Int64 | Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64 |
UInt64 | Byte, SByte, Int16, UInt16, Int32, UInt32, Int64 |
Decimal | Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64 |
Single | Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64 |
Double | Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64 |