Partilhar via


Digite tabelas de conversão no .NET

A conversão de ampliação ocorre quando um valor de um tipo é convertido em outro tipo de tamanho igual ou maior. Uma conversão de estreitamento ocorre quando um valor de um tipo é convertido em um valor de outro tipo que é de um tamanho menor. As tabelas neste tópico ilustram os comportamentos exibidos por ambos os tipos de conversões.

Ampliando as conversões

A tabela a seguir descreve as conversões de ampliação que podem ser realizadas sem a perda de informações.

Type Pode ser convertido sem perda de dados para
Byte UInt16, Int16, UInt32, , Int32, Int64UInt64, 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, Int64UInt64, Single, Double,Decimal
Int32 Int64, Double, Decimal
UInt32 Int64, UInt64, Double, Decimal
Int64 Decimal
UInt64 Decimal
Single Double

Algumas conversões de alargamento para Single ou Double podem causar uma perda de precisão. A tabela a seguir descreve a ampliação das conversões que, às vezes, resultam em perda de informações.

Type Pode ser convertido em
Int32 Single
UInt32 Single
Int64 Single, Double
UInt64 Single, Double
Decimal Single, Double

Estreitando conversões

Uma conversão restrita para Single ou Double pode causar uma perda de informações. Se o tipo de destino não puder expressar corretamente a magnitude da fonte, o tipo resultante será definido como a constante PositiveInfinity ou NegativeInfinity. PositiveInfinity resulta da divisão de um número positivo por zero e também é retornado quando o valor de um Single ou Double excede o MaxValue valor do campo. NegativeInfinity resulta da divisão de um número negativo por zero e também é retornado quando o valor de a Single ou Double cai abaixo do valor do MinValue campo. Uma conversão de a Double para a Single pode resultar em PositiveInfinity ou NegativeInfinity.

Uma conversão restrita também pode resultar em uma perda de informações para outros tipos de dados. No entanto, um OverflowException é lançado se o valor de um tipo que está sendo convertido estiver fora do intervalo especificado pelos campos e MinValue do tipo MaxValue de destino e a conversão for verificada pelo tempo de execução para garantir que o valor do tipo de destino não exceda MaxValue seu ou MinValue. As conversões que são realizadas com a classe são sempre verificadas System.Convert dessa maneira.

A tabela a seguir lista as conversões que geram um OverflowException uso System.Convert ou qualquer conversão verificada se o valor do tipo que está sendo convertido estiver fora do intervalo definido do tipo resultante.

Type Pode ser convertido em
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, ,UInt32UInt64
UInt64 Byte, SByte, Int16, UInt16, Int32, UInt32, Int64
Decimal Byte, SByte, , Int16, Int32UInt16, UInt32, Int64,UInt64
Single Byte, SByte, , Int16, Int32UInt16, UInt32, Int64,UInt64
Double Byte, SByte, , Int16, Int32UInt16, UInt32, Int64,UInt64

Consulte também