c# - 为什么C#编译器在嵌套范围内允许重复的变量?

标签 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

https://dotnetfiddle.net/h85BK4

为什么突然允许这样做?

后续问题:如果这是新语言的“功能”,是否有一种方法可以配置Visual Studio在变量在嵌套范围中重复时继续中断?

最佳答案

这是C#8.0中的新功能,局部函数和lambda参数可能会遮盖外部名称。

关于c# - 为什么C#编译器在嵌套范围内允许重复的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59688353/

相关文章:

visual-studio - Visual Studio 在 Debug模式下运行没有 docker 的支持 Docker 的项目

c# - C# 中的 byte[] 究竟是什么?

c# - 有没有开源的视频转码服务器?

ubuntu - VS 代码在资源管理器中加载所有解决方案项目

.net-core - Fluxor:不发送 Action 的效果?

Visual Studio 2019 中的 Git 作者信息

c# - 在不触及注册表的情况下将页眉和页脚信息添加到 WebBrowser 的打印输出

c# - 字体导致自定义控件中的 GDI 泄漏

azure - 使用 VSTS 的 ASP.NET Core Web API 的 CI/CD

aws-lambda - 发布到 AWS Lambda - 找不到 "build-lambda-zip"实用程序