Tabelle di conversione dei tipi
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 |
---|---|
UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
|
UInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
|
Alcune conversioni di ampliamento verso Single o Double possono provocare una perdita di precisione. Nella tabella seguente sono elencate le conversioni di ampliamento che possono generare una perdita di informazioni.
Tipo |
Conversione in |
---|---|
Conversioni di restrizione
Una conversione di restrizione verso Single o Double può provocare 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 Double a un tipo Single potrebbe avere come risultato un valore PositiveInfinity o NegativeInfinity.
Una conversione di restrizione 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 in modo da assicurare che il valore del tipo di destinazione non superi MaxValue o MinValue. Le conversioni eseguite mediante la classe System.Convert vengono sempre controllate in questo modo.
Nella tabella seguente sono elencate le conversioni che generano un evento OverflowException utilizzando la classe System.Convert o qualsiasi conversione controllata se il valore del tipo convertito non rientra nell'intervallo specificato per il tipo risultante.
Tipo |
Conversione in |
---|---|