Historicamente, ao desenvolver no .Net, não conseguia duplicar o nome da variável no escopo aninhado. No entanto, após atualizar recentemente o Visual Studio 2019 para a versão 16.4.2, observei que os nomes de variáveis podem ser duplicados no escopo aninhado.
Por exemplo:
var test = "hello";
Console.WriteLine(test);
var things = new []{"one", "two", "three"};
things.Select(test => // <- test is duplicated here, normally this breaks compilation
{
Console.WriteLine(test);
return test;
}).ToList();
// output:
// hello
// one
// two
// three
https://dotnetfiddle.net/h85BK4
Por que isso é subitamente permitido?
Pergunta de acompanhamento: Se esse for um novo "recurso" de idioma, existe uma maneira de configurar o Visual Studio para continuar interrompido quando uma variável é duplicada no escopo aninhado?
test
como sugerido não tem efeito. Você pode experimentá-lo no Fiddle vinculado na pergunta.
test
variável, já que o tipo de dados é o mesmo. tente declarartest
variável comoint
por exemplo.var test = 12345;
Eu acho que você deve obter erro de compilação. (Eu não tentei)