C# Type Casting3 min read

Categoria: ASP.NET C# Net Core Net Framework

Fala pessoal! Hoje vamos falar sobre algumas possibilidades de se converter valores utilizando o C# com alguns recursos da plataforma .NET. Basicamente, existem algumas formas de se realizar conversões de tipos em C#: conversões implícitas, conversões explícitas e conversões com classes auxiliares. Vamos ver alguns exemplos de como fazer cada uma dessas conversões.

Conceito

Type casting ocorre quando você precisa atribuir um valor de uma variável de um tipo, em outra de outro tipo. Essas operações são comuns no dia a dia, pois eventualmente você precisará atribuir uma variável do tipo inteiro em uma variável do tipo double e você precisa saber quando poderá utilizar cada tipo de conversão.

O primeiro passo para você entender como cada conversão funciona é conhecer os tipos de dados da linguagem C# (clicando aqui). Conhecer os tipos de dados vai te dar a capacidade de entender o tamanho de dados que cada variável suporta e com isso você irá entender que existem duas forma de ser pensar em conversão de dados:

  • Conversão implícita (automática) – ocorre quando você está atribuindo um valor de uma variável menor em outra de tamanho maior. Exemplo:
    int ->  double
  • Conversão explícita (manual) – ocorre quando você quer atribuir um valor de uma variável de tamanho maior em outra de um tamanho menor.Exemplo:
    double ->  int

Conversões implícitas

Ocorre quando você está atribuindo um valor de uma variável menor em outra de tamanho maior. Isso é possível, já que temos mais bits disponíveis para que a conversão seja realizada:

int numberInt = 14;
float numberFloat = numberInt;
		
Console.WriteLine(numberInt);     // Saída: 14
Console.WriteLine(numberFloat);   // Saída: 14

Veja que se você atribuir uma variável do tipo int em uma variável do tipo float (que é maior que o tipo inteiro) a conversão ocorre de modo automático.

Conversões explícitas

Ocorre quando você quer atribuir um valor de uma variável de tamanho maior em outra de um tamanho menor, ou seja, uma abordagem exatamente contrária da que foi executada acima:

double numberDouble = 14.50;
int numberInt = (int)numberDouble;
		
Console.WriteLine(numberDouble);   // Saída: 14.50
Console.WriteLine(numberInt);      // Saída: 14	

No exemplo acima, estamos convertendo explicitamente um valor de ponto flutuante para um valor inteiro. Tenha cuidado neste tipo de conversão, pois haverá perda de dados!

Conversões com classes auxiliares

Utilizando as classes da plataforma .NET você poderá executar conversão do tipo explícita ou implícita de forma segura. Existem vários métodos na namespace System.Covert, como: Convert.ToString, Convert.ToDouble, Convert.ToInt32 entre outros métodos:

double numberDouble = 14.50;
int numberInt = 150;

// Valores		
Console.WriteLine(Convert.ToString(numberDouble));   // 14.5
Console.WriteLine(Convert.ToDouble(numberInt));      // 150
Console.WriteLine(Convert.ToInt64(numberInt));       // 150

// Tipos		
Console.WriteLine(Convert.ToString(numberDouble).GetType());   // System.String
Console.WriteLine(Convert.ToDouble(numberInt).GetType());      // System.Double
Console.WriteLine(Convert.ToInt64(numberInt).GetType());       // System.Int64	

Você pode ver todos os tipos de conversão possível utilizando os métodos da classe estática Convert, clicando aqui.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *