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!
Deixe um comentário