Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Conversões de expansão ocorrem quando um valor de um tipo é convertido em outro tipo de tamanho igual ou maior. Conversões de redução ocorrem quando um valor de um tipo é convertido em um valor de outro tipo de tamanho menor. As tabelas neste tópico ilustram os comportamentos exibidos por ambos os tipos de conversões.
Conversões de expansão
A tabela a seguir descreve as conversões de expansão que podem ser executadas sem perda de informações.
| Tipo | Pode ser convertido sem perda de dados para |
|---|---|
| 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, UInt64, Double, Decimal |
| Int64 | Decimal |
| UInt64 | Decimal |
| Single | Double |
Algumas conversões de expansão para Single ou Double podem causar perda de precisão. A tabela a seguir descreve as conversões de expansão que, às vezes, resultam em perda de informações.
| Tipo | Pode ser convertido para |
|---|---|
| Int32 | Single |
| UInt32 | Single |
| Int64 | Single, Double |
| UInt64 | Single, Double |
| Decimal | Single, Double |
Conversões de restrição
Uma conversão de redução para Single ou Double pode causar perda de informações. Se o tipo de destino não puder expressar corretamente a magnitude da origem, 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 ultrapassar o valor do campo MaxValue. NegativeInfinity resulta da divisão de um número negativo por zero, e também é retornado quando o valor de um Single ou Double fica abaixo do valor do campo MinValue. Uma conversão de um Double em um Single pode resultar em PositiveInfinity ou NegativeInfinity.
Uma conversão de redução também pode resultar em perda de informações para outros tipos de dados. No entanto, OverflowException será lançada se o valor de um tipo que está sendo convertido ficar fora do intervalo especificado pelos campos MaxValue e MinValue do tipo de destino, e a conversão será verificada pelo runtime para garantir que o valor do tipo de destino não ultrapasse MaxValue ou MinValue. Conversões executadas com a classe System.Convert sempre são verificadas dessa maneira.
A tabela a seguir lista conversões que lançam OverflowException usando System.Convert ou qualquer conversão selecionada se o valor do tipo que está sendo convertido estiver fora do intervalo definido pelo tipo resultante.
| Tipo | Pode ser convertido para |
|---|---|
| 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 |