Vamos tratar nesta lição da Conversão de Tipos de Dados em C#.
É possível converter um tipo de dados para outro tipo no C#. Podemos realizar conversão implícita de tipos (ou seja, o C# realiza a conversão de forma segura automaticamente) ou explícita (o programador utiliza funções pré-definidas – “cast”), ou ainda usar classes auxiliares.
Vamos ver um exemplo de conversão implícita:
O conteúdo da variável i, do tipo inteira, é convertida implicitamente para o tipo string ao passá-la como parâmetro para o método WriteLine da classe Console.
Você pode consultar todas as conversões implícitas permitidas na tabela abaixo:
De | Para |
sbyte | short, int, long, float, double, ou decimal |
byte | short, ushort, int, uint, long, ulong, float, double, ou decimal |
short | int, long, float, double, ou decimal |
ushort | int, uint, long, ulong, float, double, ou decimal |
int | long, float, double, ou decimal |
uint | long, ulong, float, double, ou decimal |
long | float, double, ou decimal |
char | ushort, int, uint, long, ulong, float, double, ou decimal |
float | double |
ulong | float, double, ou decimal |
Métodos de Conversão de Tipos
Na tabela a seguir temos uma listagem de métodos que podemos utilizar para realizar conversão de tipos em C#:
Método | Conversão Realizada |
ToBoolean | Converte um tipo em valor booleano, se possível |
ToByte | Converte um tipo em Byte. |
ToChar | Converte um tipo em caracter Unicode, se possível. |
ToDecimal | Converte um ponto-flutuante ou um inteiro em decimal. |
ToDouble | Converte um tipo em Double |
ToInt16 | Converte um tipo em inteiro de 16 bits. |
ToInt32 | Converte um tipo em inteiro de 32 bits. |
ToInt64 | Converte um tipo em inteiro de 64 bits. |
ToString | Converte um tipo em String. |
Exemplo de conversão de tipos usando métodos:
int i = 90;
float f = 22.100f;
double d = 1450.33;
bool a = true;
Console.WriteLine(i.ToDouble());
Console.WriteLine(f.ToDecimal());
Console.WriteLine(d.ToInt16());
Console.WriteLine(a.ToString());
Conversão de Tipos com a classe Convert
A classe System.Convert permite converter um tipo base em outro tipo de dados base usando seus métodos.
Exemplo:
int x = 15
double y;
y = Convert.ToDouble(x);
Console.WriteLine(“Valor convertido: {0} do tipo {1}”, y, y.GetType());
Console.WriteLine(“Valor não convertido: {0} do tipo {1}”, x, x.GetType());
|
Podemos consultar outros métodos da classe System.Convert aqui.
Conversão de tipos explícita: Cast
Se uma conversão implícita não puder ser realizada sem o risco de perder informações, você pode realizar uma conversão explícita:
double w = 2300.67;
int x;
x = (int)w;
Console.WriteLine(x.ToString());
|
Podemos visualizar uma Tabela de Conversões Numéricas Explícitas Permitidas com cast na tabela abaixo:.
De | Para |
sbyte | byte, ushort, uint, ulong, ou char |
byte | Sbyte ou char |
short | sbyte, byte, ushort, uint, ulong, ou char |
ushort | sbyte, byte, short, ou char |
int | sbyte, byte, short, ushort, uint, ulong, ou char |
uint | sbyte, byte, short, ushort, int, ou char |
long | sbyte, byte, short, ushort, int, uint, ulong, ou char |
ulong | sbyte, byte, short, ushort, int, uint, long, ou char |
char | sbyte, byte, ou short |
float | sbyte, byte, short, ushort, int, uint, long, ulong, char, ou decimal |
double | sbyte, byte, short, ushort, int, uint, long, ulong, char, float, ou decimal |
decimal | sbyte, byte, short, ushort, int, uint, long, ulong, char, float, ou double |
Conversão de tipos – exemplo:
Rode o programa a seguir para testar as conversões de tipos apresentadas:
decimal salario;
int salario_arredondado;
Console.WriteLine(“Digite o Salário:”);
//Método de Conversões 01:
salario = Convert.ToDecimal(Console.ReadLine());
// Método de Conversões 02:
//salario = decimal.Parse(Console.ReadLine());
// Método de conversões 03:
salario_arredondado = (int)salario; // Cast; não funciona com conversão de string para decimal nem int.
Console.WriteLine(“O salário é {0}”, salario.ToString());
Console.WriteLine(“E o salário arredondado é {0}”, salario_arredondado.ToString());
|