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 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à generata l'eccezione 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

Vedere anche

Riferimenti

System.Convert

Altre risorse

Conversione di tipi