void ClasseMaisUmREF(ref Dois dois) { ConsoleHelper.EscreverLinha("É desnecessário o uso de ref para parâmetros do tipo Class, pois todos os parâmetros já são por REFERÊNCIA.", ConsoleColor.Yellow); Console.WriteLine(); ConsoleHelper.VideChamada("MestreDosCodigos.TrabalhandoNoConsole.Exercicio_6", "Exercicio6", 46); Console.WriteLine(); dois.Inteiro += 1; }
void ClasseMaisUm(Dois dois) { ConsoleHelper.EscreverLinha("Toda chamada de método com parâmetro do tipo Class é uma chamada por tipo de REFERÊNCIA (diferente dos tipos primitivos que são por valor).", ConsoleColor.Yellow); ConsoleHelper.EscreverLinha("Logo, os dados modificados neste escopo serão sempre refletidos no objeto original.", ConsoleColor.Yellow); Console.WriteLine(); ConsoleHelper.VideChamada("MestreDosCodigos.TrabalhandoNoConsole.Exercicio_6", "Exercicio6", 38); Console.WriteLine(); dois.Inteiro += 1; }
public Exercicio6() { MostrarTexto(); ConsoleHelper.Subtitulo("Chamada de int como parâmetro"); { int dois = 2; InteiroMaisUm(dois); Console.WriteLine($"> 2 + 1 = {dois}"); } ConsoleHelper.Subtitulo("Chamada de int ref como parâmetro"); { int doisREF = 2; InteiroMaisUmREF(ref doisREF); Console.WriteLine($"> 2 + 1 = {doisREF}"); } ConsoleHelper.Subtitulo("Chamada de int out como parâmetro"); { int doisOUT = 2; InteiroMaisUmOUT(out doisOUT); Console.WriteLine($"> 2 (999) + 1 = {doisOUT}"); //InteiroMaisUmOUT(out int doisOUT); // Dessa maneira o método é chamado já criando uma variável sem a necessidade de declará-la explicitamente } ConsoleHelper.Subtitulo("Chamada de class como parâmetro"); { var classeDois = new Dois(); ClasseMaisUm(classeDois); Console.WriteLine($"> 2 + 1 = {classeDois.Inteiro}"); } ConsoleHelper.Subtitulo("Chamada de class ref como parâmetro"); { var classeDoisREF = new Dois(); ClasseMaisUmREF(ref classeDoisREF); // DESNECESSÁRIO usar REF Console.WriteLine($"> 2 + 1 = {classeDoisREF.Inteiro}"); } ConsoleHelper.Subtitulo("Chamada de class out como parâmetro"); { var classeDoisOUT = new Dois(); ClasseMaisUmOUT(out classeDoisOUT); Console.WriteLine($"> 2 (999) + 1 = {classeDoisOUT.Inteiro}"); //ClasseMaisUmOUT(out Dois classeDoisOUT); // Dessa maneira o método é chamado já criando uma variável sem a necessidade de declará-la explicitamente } }
void ClasseMaisUmOUT(out Dois dois) { ConsoleHelper.EscreverLinha("Necessariamente esse método será obrigado a instanciar uma nova classe ou atribuir um valor á ela neste escopo.", ConsoleColor.Yellow); ConsoleHelper.EscreverLinha("Todos os dados modificados serão refletidos no objeto original, ignorando a instância toda que foi passada por parâmetro.", ConsoleColor.Yellow); Console.WriteLine(); ConsoleHelper.VideChamada("MestreDosCodigos.TrabalhandoNoConsole.Exercicio_6", "Exercicio6", 54); Console.WriteLine(); dois = new Dois() { Inteiro = 999 }; dois.Inteiro += 1; }