2
respostas

saída do console:

Queria saber se a saída do console não será : arg1 opcional2 arg2 opcional 1 opcional1 opcional2, pois se os parms são opcionais ele pega o default correto?senão pq seria opcional e pq não há essa alternativa entre as respostas se for o caso

static void TestaOpcional()
{
    Console.WriteLine("Executando método sem argumentos");
}

static void TestaOpcional(string arg1 = "opcional 1", string arg2 = "opcional 2")
{
    Console.WriteLine($"{arg1} {arg2}");
}
TestaOpcional(arg1: "arg1");
TestaOpcional(arg2: "arg2");
TestaOpcional();
2 respostas

Olá Daniel!

Neste caso ele usa o método sem passagem de parâmetro, que devolve a string Executando método sem argumentos, pois existe uma função que é chamada exatamente quando não há passagem de parâmetros. O compilador vai procurar por um método que não tenha passagem de parâmetros antes de ver se existe uma função com parâmetros opcionais.

Fiz um teste comentando a função que não tem passagem de parâmetros e ainda assim a resposta B não estaria correta. E neste caso a sua resposta que estaria.

Sem comentário:

Com comentário:

Espero ter ajudado!

Bons estudos!

No caso, as saídas são, respectivamente:


arg1 opcional 2
opcional 1 arg2
Executando método sem argumentos.

Pois, veja, a chamada realizada foi a seguinte:


TestaOpcional(arg1: "arg1");
TestaOpcional(arg2: "arg2");
TestaOpcional();

O que significa que, na primeira chamada estamos invocando o método com 2 argumentos, porém estamos sobrescrevendo o arg1, logo, o compilador manterá o default do arg2que é a string "opcional 2".

Na segunda chamada, acontece exatamente o contrário. Sobrescreve-se o arg2 e mantém-se a string "opcional 1".

Na terceira e última chamada, o método que é invocado é o que não contém nenhum argumento, portanto, é executada a instrução que existe naquele método, no caso Console.WriteLine("Executando método sem argumentos");

Espero que tenha conseguido :)

Abraços!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software