【发布时间】:2020-02-19 21:40:23
【问题描述】:
从历史上看,在 .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 配置为在嵌套范围内重复变量时继续中断?
【问题讨论】:
-
我不认为它允许重复变量。它使用相同的
test变量,因为数据类型相同。尝试将test变量声明为int例如。var test = 12345;我认为你应该得到编译错误。 (我没试过) -
@LP13 按照建议更改
test的类型无效。您可以在问题中链接的 Fiddle 中尝试。 -
没关系,目标框架无关紧要。新行为是由于语言版本。该代码在 C# 8 上编译,它不能在 C# 7.3 上编译(我假设以下)
-
有 GitHub issue 。里程碑设置为 16.5。 @OrkhanAlikhanov 你发现它更快:)
标签: c# .net-core visual-studio-2019