Conversões de Tipos
 
Hoje estaremos vendo um dos tópicos mais importantes de programação. Em muitos momentos dentro de um código temos que fazer conversões de tipos de variáveis. Um exemplo disso é quando temos uma variável do tipo int e precisamos converte-la para o tipo double num determinado momento. Isto pode acontecer por diversos motivos. O uso mais comum na conversão de tipos é quando se usa as textboxs e precisamos converter o dado do textbox (que é sempre do tipo string) em um tipo int para usar em cálculos matemáticos.
                                            
Introdução
A conversão de tipos é o ato de forçar uma expressão a utilizar e retornar um determinado tipo. Também chamamos esta modalidade de “Casting”. A conversão de um tipo de dado em número ou em literal é muito comum em situações de programação. Porém se tratando de programação, sempre temos que ficar atentos, e na conversão de tipos não é diferente. Também podemos encontrar casos que possam gerar erros na conversão de tipos, como veremos no artigo mais adiante.
Podemos ter dois tipos de conversões de tipos, pode ser implícita ou explicitas, que são conversões especificadas. Normalmente o c# exige conversões explicitas.
 
Exemplificando uma conversão de tipos
Para termos uma primeira idéia de como podemos efetuar uma conversão de tipo veremos o exemplo abaixo.
 
double X = 20;
int Y = 20;
X = Y;
Y = X;
Listagem 01. Efetuando conversões de tipos.
 
Neste exemplo acima temos a primeira atribuição, X do tipo double recebendo Y do tipo int. Pergunta-se, isso é correto? A resposta é sim, trata-se de uma conversão implícita, com apenas uma atribuição uma variável do tipo double recebeu o valor de uma variável do tipo int.
E na segunda atribuição, é correta? Agora a resposta é não, pois neste caso a atribuição implícita não ocorre, isso se deve porque o espaço reservado em memória para o double é maior que o espaço reservado para um inteiro. Neste caso teríamos que fazer, antes de mais nada, uma conversão explicita pra assim podermos fazer a operação de atribuição.
                                             
Problemas com Conversões de Tipos
Devemos ficar atendo aos problemas que possam ser causados na conversão de tipos. Veja o exemplo abaixo de um típico erro de conversão de tipos.
 
using System;
class Teste {
       public static void Main() {
          int i;
          i = (double) 100000000;
       }
}
Listagem 02. Problemas com conversão de Tipos.
 
Neste exemplo acima temos um grande problema. Aqui teremos um erro, pois estamos tentando converter em int um valor double, o que é impossível. Para solucionar este tipo de problema teríamos que fazer como no exemplo abaixo.
using System;
class Teste {
       public static void Main() {
          int i = 1234567;
          double v;
          v = (double) i;
       }
}
Listagem 03. Problemas com conversão de Tipos.
 
Funções de Conversão de Tipos
Abaixo listamos todas as funções de conversão de tipos, é essencial para qualquer programador saber todos os tipos de conversões, mais cedo ou mais tarde sempre estaremos nos debatendo de frente com esse tipo de problema, principalmente programadores que trabalham com o modo visual.
 

Função
Descrição
ToBoolean
Converte um determinado valor para um valor boolean.
ToByte
Converte um determinado valor para um inteiro de 8 bits.
ToChar
Converte um determinado valor para um caractere unicode.
ToDateTime
Converte um determinado valor para um DateTime.
ToDecimal
Converte um determinado valor para um número Decimal.
ToDouble
Converte um determinado valor para um valor de número de ponto flutuante com a precisão do tipo Doublé.
ToInt16
Converte um determinado valor para um inteiro de 16 bits.
ToInt32
Converte um determinado valor para um inteiro de 32 bits (compatível com int).
ToInt64
Converte um determinado valor para um inteiro de 64 bits (compatível com long).
ToSingle
Converte um determinado valor para um valor numérico de ponto flutuante com precisão do tipo Single (compatível com float).
ToString
Converte um determinado valor para um formato String.
ToUInt16
Converte um determinado valor para um inteiro de 16 bits (compatível com ushort).
ToUInt32
Converte um determinado valor para um inteiro de 32 bits (compatível com uint).
ToUInt64
Converte um determinado valor para um inteiro de 64 bits (compatível com ulong).

                                
Conclusão
Neste artigo vimos um tópico fundamental no C Sharp que são as conversões de tipos ou Casting. Esta técnica é muito usada principalmente no modo visual quando temos que converter caixas de textos em determinados ou valores.
 
Pudemos analisar também os possíveis problemas que devem ser contornados ou então o compilador irá acusar erro.
 
A todos que me mandaram e-mails pedindo um artigo sobre conversões, peço que continuem pedindo seus tópicos preferidos em C# ou aqueles tópicos da linguagem em que você não possui conhecimento sobre esta determinada área da linguagem.
 
Espero que tenham aproveitado bem o artigo e somado em conhecimento. Dúvidas, sugestões ou reclamações serão bem vindas.
 
Até a próxima!