Conteúdo do Curso
Noções Básicas de C#
Noções Básicas de C#
Conversão de Tipos Básica
Type Casting é o processo de converter um valor de um tipo de dado para outro. O Type Casting geralmente é possível entre valores representados numericamente. Por exemplo, podemos converter um float
para um int
e um int
para um float
. No entanto, converter uma string
para um int
não faz sentido lógico e, portanto, não é possível.
Existem dois tipos de typecasting, a saber, Type Casting Implícito e Type Casting Explícito.
Type Casting Implícito é quando um valor é automaticamente convertido de um tipo para outro, quando necessário.
main
int val1 = 10; long val2 = val1; // int is automatically converted to long float val3 = var1; // int is automatically converted to float double var4 = var1; // int is automatically converted to double
Sempre que ocorre type casting implícito, é sempre de um tipo de dado menor para um maior. O tamanho de um tipo de dado é determinado por quantos bits de dados ele pode armazenar. Por exemplo, int
pode armazenar 32 bits enquanto long
pode armazenar 64 bits, portanto, a conversão implícita de int
para long
é possível. Da mesma forma, float
para double
também é possível.
Os tipos ordenados por seus tamanhos são listados do menor para o maior abaixo:
char
-> int
-> long
-> float
-> double
Type Casting Explícito é quando o usuário menciona especificamente o novo tipo de dado de um valor para o qual ele deve ser convertido. O Type Casting Explícito é necessário quando queremos converter um valor de um tipo de dado maior para um menor, isso porque quase sempre há perda de dados ao converter um valor de um tipo de dado maior para um menor. Por exemplo, se convertermos o float 3.14
para um inteiro, ele dará 3
como resultado, portanto, perdemos alguns dados durante essa conversão. Portanto, o compilador precisa de um comando explícito do programador para realizar tal conversão.
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = val1; // Error: Cannot implicitly convert type 'float' to 'int'. An explicit conversion exists (are you missing a cast?) Console.WriteLine(val1); Console.WriteLine(val2); } } }
Para corrigir o erro no código acima, precisamos converter explicitamente val1
para um valor inteiro.
A sintaxe de um cast é (datatype) value
, por exemplo (int) 3.1415
. Então, neste caso, escreveremos (int) val1
:
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = (int) val1; Console.WriteLine(val1); Console.WriteLine(val2); } } }
Obrigado pelo seu feedback!