历史上,在.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在嵌套范围中重复变量时继续中断?
@ LP13
—
艾米
test
按建议更改类型无效。您可以在问题中链接的小提琴中尝试。
没关系,目标框架是无关紧要的。新的行为归因于语言版本。该代码在C#8上编译,而在C#7.3(以及我认为以下的版本)上没有编译
—
EmanuelVintilă
有GitHub 问题。里程碑设置为16.5。@OrkhanAlikhanov,您发现它的速度更快:)
—
Pavel Anikhouski
test
由于数据类型相同,因此使用相同的变量。尝试将test
变量声明为int
例如。var test = 12345;
我认为你应该得到编译错误。(我还没有尝试过)