Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 |