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 |