Cast – Conversão De Tipos – Convertendo Um Tipo De Dado Em Outro

Tempo de leitura: 7 min

Escrito por Celso Kitamura
em 18 de janeiro de 2018

Compartilhe agora mesmo:

Cast – Conversão De Tipos – Convertendo Um Tipo De Dado Em Outro
5/5 - (2 votes)

Quando desenvolvemos um aplicativo, muitas vezes precisamos converter dados de um tipo para outro, ou seja, fazer uma conversão de tipos.

 

É quando um valor de um tipo é atribuído a uma variável de um tipo diferente. Considere o cenário em que um usuário insere um número em uma caixa de texto.

 

Para usar esse número em um cálculo numérico, precisamos converter o valor da string “89” que lemos da caixa de texto para o valor int 89, assim podemos armazená-lo em uma variável inteira.

 

O processo de conversão de um valor de um tipo de dados para outro tipo é chamado de conversão de tipos ou simplesmente cast.

 

Definição De Conversão De Tipos

 

Cast, no contexto de C#, é um método pelo qual um valor é convertido de um tipo de dado para outro. O cast é uma conversão de tipos explícita pela qual o compilador é informado sobre a conversão e a possibilidade de perda de dados do resultado.

 

O cast normalmente é usado quando os usuários que estão executando a operação de cast devem estar ciente da conversão explícita. Isso ajuda nas conversões onde as informações podem ser perdidas ou que podem não ser bem-sucedidas por outros motivos. As operações de cast podem ser realizadas para conversões numéricas nas quais o tipo de destino é de menor precisão ou menor alcance. Também é usado para conversão da instância da classe base para a classe derivada.

 

Devido à característica inerente das variáveis em linguagem C# sendo estaticamente definidos no tempo de compilação, as variáveis declaradas uma vez no código não podem ser declaradas novamente e armazenar valores de outro tipo, a menos que esse tipo seja conversível ao tipo de uma variável. O cast ajuda a copiar um valor de um tipo específico para uma variável ou parâmetro de um método de tipo diferente.

 

Existem dois tipos de conversões no .NET Framework:

  • Conversão implícita, que é executada automaticamente pelo CLR em operações que podem ser feitas sem perda de informações.
  • Conversão explícita, em que precisamos escrever o código para executar uma conversão que de outra forma poderia haver perda de informações ou produzir um erro.

 

A conversão de tipos explícita reduz a possibilidade de erros em seu código e torna seu código mais eficiente. O C# proíbe as conversões implícitas que perdem precisão. No entanto, esteja ciente de que algumas conversões explícitas podem produzir resultados inesperados.

 

Conversões Implícitas

 

Uma conversão implícita ocorre quando um valor é convertido automaticamente de um tipo de dados para outro. A conversão não requer nenhuma sintaxe especial no código-fonte. O C# só permite conversões implícitas seguras, como o “alargamento” de um número inteiro.

 

O exemplo de código a seguir mostra como os dados são convertidos implicitamente de um número inteiro para um longo, ou seja, de um tipo “menor” para um “maior”.

 

using System;

class Program
{
    static void Main()
    {
        int a = 4;
        long b;
        b = a;        // Conversão implícita de um inteiro para long.
    }
}

 

 

Essa conversão sempre dá certo e nunca perdemos informações. No entanto, não podemos converter implicitamente um valor long em um int, porque nessa conversão corremos o risco de perder informações (o valor long pode estar fora do intervalo suportado pelo tipo int). A tabela a seguir mostra as conversões de tipo implícitas suportadas.

 

De Para
sbyte short, int, long, float, double, decimal
byte short, ushort, int, uint, long, ulong, float, double, decimal
short int, long, float, double, decimal
ushort int, uint, long, ulong, float, double, decimal
int long, float, double, decimal
uint long, ulong, float, double, decimal
long, ulong float, double, decimal
float double
char ushort, int, uint, long, ulong, float, double, decimal

 

Conversões Explícitas

 

No C#, podemos usar um operador de cast para executar conversões explícitas. Um cast especifica o tipo que queremos converter, entre parênteses antes do nome da variável.

 

O exemplo de código a seguir mostra como executar uma conversão de tipos explícita.

 

using System;
using System.Text;

class Program
{
    static void Main()
    {
        int a;
        long b = 5;
        a = (int) b;    // Conversão de tipos explícita de long para int.
    }
}

 

Você só pode realizar conversões significativas dessa maneira, como converter um longo para um int. Você não pode usar cast se o formato dos dados tiver que mudar fisicamente, como se você estiver convertendo uma string para um número inteiro. Para executar esses tipos de conversões, podemos usar os métodos da classe System.Convert.

 

Usando A Classe System.Convert

 

A classe System.Convert fornece métodos que podem converter um tipo de dados base para outro tipo de dados base. Esses métodos possuem nomes como ToDouble, ToInt32, ToString e assim por diante. Todas as linguagens compatíveis com o CLR podem usar essa classe. Você pode achar essa classe mais fácil de usar para conversões do que conversões implícitas ou explícitas porque o IntelliSense ajuda a localizar o método de conversão que você precisa.

 

O exemplo de código a seguir converte uma string para um int.

 

 

using System;

class Program
{
    static void Main()
    {
        string inteiroPossivel = "1234";
        int cont = Convert.ToInt32(inteiroPossivel );
    }
}

 

Alguns dos tipos de dados internos no C# também fornecem um método TryParse, que permite sabermos se a conversão dará certo antes de realizar a conversão.

 

O exemplo de código a seguir mostra como converter uma string para um int usando o método int.TryParse().

 

using System;

class Program
{
    static void Main()
    {
        int numero = 0;
        string numeroString = "1234";

        if (int.TryParse(numeroString, out numero))
        {
            // Conversão feita com sucesso numero agora é igual a 1234.
        }
        else
        {
            // Conversão deu errado, numero agora é igual a 0.
        }
    }
}

 

Em tempo

 

No caso de operações de cast que envolvam tipos base e derivados, existe o risco de erros. Para testar a compatibilidade antes de executar um cast, o C# fornece dois operadores para permitir o “casting” sem causar uma exception. Os dois operadores são:

 

Is‘ costuma verificar a conversão bem sucedida de um tipo de referência para outro e determinar o tipo de um objeto fazer o casting.

 

As‘ é usado para obter o valor do cast, se o cast pode ser feito com sucesso e, portanto, mais eficiente.

 

Uma vez que é potencialmente inseguro usar cast devido à possibilidade de erro, é altamente recomendável realizar operações de cast com código estruturado de manipulação de exceção para lidar com erros.

 

 

using System;
using System.Text;

class Program
{
    static void Main()
    {
        int valor = (int)1.5; // Cast explícito.

        Console.WriteLine(valor);

        object val = new StringBuilder();

        if (val is StringBuilder) // Verificação do Cast com IS.
        {
            StringBuilder builder = val as StringBuilder; // Cast com operador AS.
            Console.WriteLine(builder.Length == 0);
        }
    }
}

 

Palavras finais

 

Cast, no contexto de C #, é um método pelo qual um valor é convertido de um tipo de dado para outro. O cast é uma conversão de tipos explícita pela qual o compilador é informado sobre a conversão e a possibilidade de perda de dados do resultado.

 

Os dois tipos de conversões no .NET Framework são implícita (executada automaticamente quando não há perda de informações) e explícita, em que precisamos escrever o código para executar uma conversão.

Podemos usar também a classe System.Convert. Ela fornece métodos que podem converter um tipo de dados base para outro tipo de dados base.

Para trabalhar com conversão de tipos temos dois operadores que permitem fazer o cast sem causar erro:

  • Is‘ costuma verificar a conversão bem sucedida de um tipo de referência para outro e determinar o tipo de um objeto fazer o casting.
  • As‘ é usado para obter o valor do cast, se o cast pode ser feito com sucesso e, portanto, mais eficiente.

 

Meu e-book Como Aprender a Programar do Absoluto Zero está GRATUITO por tempo limitado!

Olha o link: 👉🏼 http://celsokitamura.com.br/como-aprender-a-programar

Bora aprender a programar!

Compartilhe agora mesmo:

Você vai gostar também:

Para enviar seu comentário, preencha os campos abaixo:

Deixe um comentário


*


*


Seja o primeiro a comentar!

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

Importante: Este site faz uso de cookies que podem conter informações de rastreamento sobre os visitantes.
Criado por WP RGPD Pro