public void Executar() { double vDivida = 1_234_567_890.123; long vCopia = (long)vDivida; Console.WriteLine(vCopia.GetType()); Animal vAnimal = new Gato(); Gato vGato = (Gato)vAnimal; //Cast = conversão explícita Console.WriteLine(vGato.GetType()); }
public void Executar() { //Conversões implícitas //Para tipos numéricos internos, uma conversão implícita poderá ser feita quando o //valor a ser armazenado puder se ajustar à variável sem ser truncado ou arredondado. //Por exemplo, uma variável do tipo long (inteiro de 8 bytes) pode armazenar //qualquer valor que uma int (4 bytes em um computador de 32 bits) pode armazenar. //No exemplo a seguir, o compilador converte implicitamente o valor à direita para //um tipo long antes de atribuí-lo à grandeNumero. //// Conversão implícita. A variável long pode conter qualquer valor que um int suporta int num = 2147483647; long grandeNumero = num; Console.WriteLine($"grandeNumero: {grandeNumero}"); //Resultado //grandeNumero: 2147483647 //Tabela de conversões numéricas implícitas. //De Para //======== //sbyte short, int, long, float, double ou decimal //byte short, ushort, int, uint, long, ulong, float, double ou decimal //short int, long, float, double ou decimal //ushort int, uint, long, ulong, float, double ou decimal //int long, float, double ou decimal //uint long, ulong, float, double ou decimal //long float, double ou decimal //char ushort, int, uint, long, ulong, float, double ou decimal //float double //ulong float, double ou decimal //Para tipos de referência, uma conversão implícita sempre existe de uma classe para //qualquer uma das suas interfaces ou classes base diretas ou indiretas. //Nenhuma sintaxe especial é necessária porque uma classe derivada sempre contém //todos os membros de uma classe base. Gato gato = new Gato(); Animal animal = gato; // Sempre funciona! Console.WriteLine($"animal.GetType(): {animal.GetType()}"); //Resultado //animal.GetType(): certificacao_csharp_roteiro.Gato }
public void Executar() { double inteiro = 2_234_234; //long inteiroLongo = inteiro; long inteiroLongo = (long)inteiro; Console.WriteLine(inteiroLongo); Animal animal = new Gato(); Gato gato = (Gato)animal; Console.WriteLine(gato.GetType()); }
public void Executar() { double divida = 1_234_567_890.123; //long copia = divida; double salario = 1_237.89; long copiaSalario = (long)salario; Console.WriteLine(copiaSalario); ///<image url="$(ProjectDir)img13.png" /> /// Animal animal = new Gato(); Gato gato = (Gato)animal; //cast = conversão explícita Console.WriteLine(gato.GetType()); }
public void Executar() { Animal gato = new Gato { Nome = "Bichano" }; gato.Beber(); gato.Comer(); gato.Andar(); Gato gata = new Gato { Nome = "Pantera" }; gata.Beber(); gata.Comer(); gata.Andar(); }
public void Executar() { int inteiro = 2_234_234; long inteiroLongo = inteiro; Console.WriteLine(inteiroLongo); // erro de compilação: não podemos adicionar um recipiente enorme a um recipiente menor :( //int inteiroNovo = inteiroLongo; Gato gato = new Gato(); Animal animal = gato; Console.WriteLine(animal.GetType()); // erro de compilação: só podemos fazer a conversão implicita se utilizarmos como destino uma variavel do tipo base da classe // sendo recebida ou uma interface implementada pela classe ou por uma classe base da classe //Gato gatinho = animal; }
public void Executar() { int inteiro = 2_123_456_789; long inteiroLongo = inteiro; Console.WriteLine(inteiroLongo); //inteiro = inteiroLongo; ///<image url="$(ProjectDir)img12.png" /> Gato gato = new Gato(); Animal animal = gato; Console.WriteLine(animal.GetType()); IAnimal ianimal = gato; Console.WriteLine(ianimal.GetType()); //gato = ianimal; }
public void Executar() { Animal animal = new Animal(); Gato gato = new Gato(); Cliente cliente = new Cliente("José da Silva", 30); }