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

Assinale o item com o resultado da execução desse código.
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