Condividi tramite


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

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 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

Int32

Single

UInt32

Single

Int64

Single, Double

UInt64

Single, Double

Decimal

Single, Double

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

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

Vedere anche

Riferimenti

System.Convert

Concetti

Conversione di tipi in .NET Framework