Converter
um tipo de dado em número ou em literal é comum em situações de
programação.
Quando esta aplicação for destinada a Web com intervenções de
internautas,
esse recurso é utilizado com mais freqüência ainda. É comum o
internauta
testar a aplicação para ter certeza que o desenvolvedor se preocupou
com as
devidas conversões de valores.
Devemos
considerar alguns aspectos para a conversão de números:
·
Como existem diversos tipos de
números, inteiros, ponto flutuante ou
decimal,
os valores são convertidos sempre para o tipo de maior
faixa de
valores. Por exemplo, o tipo long é convertido para o ponto
flutuante,
mais é importante ressaltar que o contrario causa um erro.
·
Os tipos de menor faixa são
convertidos para os de maior faixa. Por
exemplo, o
tipo int pode ser convertido para: long, float, double ou
decimal.
·
A conversão dos tipos de ponto
flutuante(float, double) para decimal
causa
erro.
·
A conversão entre os tipos com sinal e
sem sinal de valores inteiros
com o
mesmo tamanho causa erro. Por exemplo, entre o tipo int e
unit.
Caso
precise forçar uma conversão mesmo que haja perda de informações, a
linguagem
disponibiliza um operador com este recurso.
int
VarValor = (int)8544555L;
·
Neste caso a variável
inteira vai receber o quanto poder
suportar
do tipo long.
long
VarValor = (long)29.145;
·
Neste caso a variável
inteira do tipo long suportará o
quanto
for possível do número não inteiro.
Em
alguns casos os tipos de conversão não precisam ser especificados pelo
desenvolvedor, essa
conversão é feita automaticamente.
Checked e Unchecked
Toda
conversão pode causar erro , mas existe uma forma de forçar a conversão
sem
que cause um erro. Para isso são utilizados o checked e o unchecked.
Veja
a saída deste programa:
using System;
public class Checar
{
public static void Main()
{
int X = 2147483647;
int Y = 2;
int Produto = 0;
unchecked
{
Produto = X * Y;
Console.WriteLine("Resultado
da Conversão: "+Produto); // retorna -2
}
checked
{
try
{
Produto = X * Y;
Console.WriteLine("Resultado
da Conversão: "+Produto);
//
Causa erro na compilação
}
catch(OverflowException e)
{
Console.WriteLine("Mensagem
de Erro: "+e.ToString());
}
}
}
Bem, é isso, espero que este artigo tenha sido útil para os seus
estudos, obrigado pela atenção e até a próxima.
Jefferson Araújo.
Contato: tecjefferson@hotmail.com