Tabelas de Conversão de Tipos
Conversões ampliadoras ocorrem quando um valor de um tipo é convertido em outro tipo de tamanho maior ou igual.Conversões redutoras ocorrem quando um valor de um tipo é convertido em outro tipo de menor tamanho.As tabelas contidas neste tópico ilustram os comportamentos exibidos por ambos os tipos de conversões.
Conversões Ampliadoras
A tabela a seguir descreve as conversões ampliadoras que podem ser executadas sem perda de informações.
Type (Tipo) |
Pode ser convertida sem perda de dados para |
---|---|
Byte |
UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
SByte |
Int16 , Int32 , Int64 , único 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 , Double , Decimal |
Int64 |
Decimal |
UInt64 |
Decimal |
Single |
Double |
Alguns conversões ampliadoras para Single ou Double pode causar perda de precisão.A tabela a seguir descreve as conversões ampliadoras que às vezes resultam em perda de informações.
Type (Tipo) |
Pode ser convertido em |
---|---|
Int32 |
Single |
UInt32 |
Single |
Int64 |
Single , Double |
UInt64 |
Single , Double |
Decimal |
Single , Double |
Conversões Redutoras
Uma conversão redutora para Single ou Double pode causar perda de informações.Se o tipo de destino não pode expressar corretamente a magnitude da origem, então o tipo resultante é definido como uma constante PositiveInfinity ou NegativeInfinity .O valor de PositiveInfinity é o resultado da divisão de um número positivo por zero e é retornado quando o valor de uma Single ou Double excede o valor do campo de MaxValue.O valor de PositiveInfinity é o resultado da divisão de um número positivo por zero e é retornado quando o valor de uma Single ou Double excede o valor do campo de MaxValue.Uma conversão de uma Double em um Single pode resultar em PositiveInfinity ou NegativeInfinity .
Uma conversão redutora também pode resultar em perda de informações para outros tipos de dados.Entretanto, se o valor de um tipo que está sendo convertido ficar fora do intervalo especificado pelo tipo de destino MaxValue e MinValue campos, e a conversão estiver definida com tempo de execução, para garantir que o valor do tipo de destino não exceda sua MaxValue ou MinValue então uma OverflowException é acionada.Conversões executadas com a classe System.Convert sempre são verificadas dessa maneira.Para obter informações sobre como executar conversões verificadas sem usar System.Convert ,consulte a seção Conversão explícita.
A tabela a seguir lista as conversões que acionam uma OverflowExceptionusandoSystem.Convert ou qualquer conversão verificada, se o valor do tipo que está sendo convertido estiver fora do intervalo definido pelo tipo resultante.
Type (Tipo) |
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, 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 |