예제 #1
0
        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;
        }
예제 #2
0
        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;
        }
예제 #3
0
        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
            }
        }
예제 #4
0
        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;
        }