Tabelle di conversione dei tipi
Aggiornamento: novembre 2007
Si parla di conversione di ampliamento quando un valore di un certo tipo viene convertito in un altro tipo di dimensioni identiche o maggiori. Si parla di conversione di restrizione quando un valore di un certo tipo viene convertito in un valore di un altro tipo di dimensioni inferiori. Nelle tabelle riportate in questa sezione sono illustrate le caratteristiche di entrambi i tipi di conversione.
Conversioni di ampliamento
Nella tabella riportata di seguito sono elencate le conversioni di ampliamento che possono essere eseguite senza alcuna perdita di informazioni.
Tipo |
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, Double, Decimal |
Int64 |
Decimal |
UInt64 |
Decimal |
Single |
Double |
Alcune conversioni verso tipi di dati Single o Double più grandi possono causare una perdita di precisione. Nella tabella seguente sono elencate le conversioni di ampliamento che possono generare una perdita di informazioni.
Tipo |
Conversione in |
---|---|
Int32 |
Single |
UInt32 |
Single |
Int64 |
Single, Double |
UInt64 |
Single, Double |
Decimal |
Single, Double |
Conversioni di restrizione
Alcune conversioni verso tipi di dati Single o Double più piccoli possono causare una perdita di informazioni. Se il tipo di destinazione non è in grado di rappresentare in modo appropriato l'ordine di grandezza del tipo di origine, il tipo risultante dalla conversione viene impostato sulla costante PositiveInfinity o NegativeInfinity. Il valore PositiveInfinity è il risultato della divisione di un numero positivo per zero e viene restituito quando il valore di un tipo Single o Double supera il valore del campo MaxValue. Il valore NegativeInfinity è il risultato della divisione di un numero negativo per zero e viene restituito quando il valore di un tipo Single o Double è al di sotto del valore del campo MinValue. Una conversione da un valore Double a un valore Single può restituire un valore PositiveInfinity o NegativeInfinity.
Una conversione di restrizione può generare una perdita di informazioni anche per altri tipi di dati. Tuttavia, 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 in modo da assicurare che il valore del tipo di destinazione non superi MaxValue o MinValue, verrà generato OverflowException. Le conversioni eseguite mediante la classe System.Convert vengono sempre controllate in questo modo. Per ulteriori informazioni sulle conversioni eseguite in modalità controllata senza l'utilizzo della classe System.Convert, vedere la sezione Conversione esplicita.
Nella tabella seguente sono riportate le conversioni che generano un'eccezione OverflowException utilizzando la classe System.Convert o qualsiasi conversione controllata se il valore del tipo convertito non rientra nell'intervallo specificato per il tipo di destinazione.
Tipo |
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 |