历史上,在.Net中进行开发时,我无法复制嵌套范围中的变量名称。但是,最近将Visual Studio 2019更新到版本16.4.2之后,我注意到可以在嵌套作用域中复制变量名称。
例如:
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
为什么突然允许这样做?
后续问题:如果这是新语言的“功能”,是否有一种方法可以配置Visual Studio在变量在嵌套范围中重复时继续中断?
最佳答案
这是C#8.0中的新功能,局部函数和lambda参数可能会遮盖外部名称。
关于c# - 为什么C#编译器在嵌套范围内允许重复的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59688353/