Tabelle di conversione dei tipi in .NETType Conversion Tables 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.Widening conversion occurs when a value of one type is converted to another type that is of equal or greater size. 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.A narrowing conversion occurs when a value of one type is converted to a value of another type that is of a smaller size. Le tabelle in questo argomento illustrano i comportamenti di entrambi i tipi di conversioni.The tables in this topic illustrate the behaviors exhibited by both types of conversions.

conversioni verso un tipo di dati più grandeWidening Conversions

Nella tabella seguente sono elencate le conversioni verso un tipo di dati più grande che possono essere eseguite senza la perdita di informazioni.The following table describes the widening conversions that can be performed without the loss of information.

TipoType Conversione senza perdita di dati inCan be converted without data loss to
Byte UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
SByte Int16, Int32, Int64, Single, Double, DecimalInt16, Int32, Int64, Single, Double, Decimal
Int16 Int32, Int64, Single, Double, DecimalInt32, Int64, Single, Double, Decimal
UInt16 UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt32, Int32, UInt64, Int64, Single, Double, Decimal
Char UInt16, UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
Int32 Int64, Double, DecimalInt64, Double, Decimal
UInt32 Int64, UInt64, Double, DecimalInt64, 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.Some widening conversions to Single or Double can cause a loss of precision. Nella tabella seguente sono elencate le conversioni verso un tipo di dati più grande che possono generare una perdita di informazioni.The following table describes the widening conversions that sometimes result in a loss of information.

TipoType Conversione inCan be converted to
Int32 Single
UInt32 Single
Int64 Single, DoubleSingle, Double
UInt64 Single, DoubleSingle, Double
Decimal Single, DoubleSingle, Double

conversioni verso un tipo di dati più piccoloNarrowing Conversions

Alcune conversioni verso il tipo di dati più piccolo Single o Double possono causare una perdita di informazioni.A narrowing conversion to Single or Double can cause a loss of information. 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.If the target type cannot properly express the magnitude of the source, the resulting type is set to the constant PositiveInfinity or 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.PositiveInfinity results from dividing a positive number by zero and is also returned when the value of a Single or Double exceeds the value of the MaxValue field. 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.NegativeInfinity results from dividing a negative number by zero and is also returned when the value of a Single or Double falls below the value of the MinValue field. Una conversione da un tipo DoubleDouble a un tipo Single potrebbe avere come risultato un valore PositiveInfinity o NegativeInfinity.A conversion from a Double to a Single might result in PositiveInfinity or NegativeInfinity.

Una conversione verso un tipo di dati più piccolo può generare una perdita di informazioni anche per altri tipi di dati.A narrowing conversion can also result in a loss of information for other data types. 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.However, an OverflowException is thrown if the value of a type that is being converted falls outside of the range specified by the target type's MaxValue and MinValue fields, and the conversion is checked by the runtime to ensure that the value of the target type does not exceed its MaxValue or MinValue. Le conversioni eseguite tramite la classe System.Convert vengono sempre controllate in questo modo.Conversions that are performed with the System.Convert class are always checked in this manner.

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.The following table lists conversions that throw an OverflowException using System.Convert or any checked conversion if the value of the type being converted is outside the defined range of the resulting type.

TipoType Conversione inCan be converted to
Byte SByte
SByte Byte, UInt16, UInt32, UInt64Byte, UInt16, UInt32, UInt64
Int16 Byte, SByte, UInt16Byte, SByte, UInt16
UInt16 Byte, SByte, Int16Byte, SByte, Int16
Int32 Byte, SByte, Int16, UInt16,UInt32Byte, SByte, Int16, UInt16,UInt32
UInt32 Byte, SByte, Int16, UInt16, Int32Byte, SByte, Int16, UInt16, Int32
Int64 Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64
UInt64 Byte, SByte, Int16, UInt16, Int32, UInt32, Int64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64
Decimal Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Single Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Double Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64

Vedere ancheSee Also

System.Convert
Conversione di tipi in .NETType Conversion in .NET