mas*_*eef 18 c# .net-core visual-studio-2019
从历史上看,在 .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
Run Code Online (Sandbox Code Playgroud)
https://dotnetfiddle.net/h85BK4
为什么突然允许这样做?
后续问题:如果这是一个新的语言“功能”,是否有办法将 Visual Studio 配置为在嵌套范围内重复变量时继续中断?
小智 0
我的猜测是 select 函数被编译为静态,因为它与主机方法体没有连接。它只是打印并返回有问题的项目。这不需要对该方法进行任何访问,因此,出于优化原因,可以将其移出方法主体并在全局范围内单独放置。
在这种情况下,该测试变量是它自己的变量,与上述测试变量没有任何连接。
至于防止这种情况,你不能告诉 vs 在发生错误时抛出错误,你只需手动更改变量名称即可。
| 归档时间: |
|
| 查看次数: |
350 次 |
| 最近记录: |