Analise o código C# exibido a seguir.            Assinale o ...

Próximas questões
Com base no mesmo assunto
Q914402 Programação

Analise o código C# exibido a seguir.

Imagem associada para resolução da questão

            

Assinale o item com o resultado da execução desse código.

Alternativas

Comentários

Veja os comentários dos nossos alunos

   static void Main(string[] args) {

           Enigma nc = delegate(int x) {

                Console.WriteLine("caso 3: {0}", x);

            };

            nc(20); // Chamamos o delegate e passamos o número 20. Iremos imprimir "Caso 3: 20"

            nc = new Enigma(F1); // Agora iremos chamar o método F1

            nc(6); // Passamos o número 6 para o método F1. num +=p;    num= 9 + 6; num=15. Iremos imprimir "Caso 1: 15"

                      // lembrando que a variável num é static, ou seja, a partir de agora ela valerá 15  para todo o programa em execução.

            nc = new Enigma(F2); // Chamando o método F2;

            nc(3); // Passamos  o número 3 para o método F2. Lembrando que num=15(pois é static).

                     // num = num/q;    num=15/3 ; num= 5

                    // Iremos imprimir "Caso 2: 5"

 

GABARITO LETRA C

O programa cria um delegate (Enigma), que permite apontar para diferentes métodos com a mesma assinatura.

A variável estática num começa com valor 9 e é compartilhada por todos os métodos.

Primeiro, nc aponta para uma função anônima que apenas imprime o valor recebido, sem mexer em num.

A chamada nc(20) imprime “caso 3: 20”.

Depois, nc passa a apontar para o método F1.

F1 soma o valor recebido (6) a num (9), resultando em 15, e imprime isso.

Em seguida, nc passa a apontar para o método F2.

F2 divide num (15) por 3, resultando em 5, e imprime isso.

O delegate permite trocar o método executado em tempo de execução.

Saída final: caso 3: 20 → caso 1: 15 → caso 2: 5 (letra C).

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo