PMF*_*PMF 8 c# file keyword visual-studio-2022
生成以下代码CS9056(“类型和别名不能命名为‘文件’”):
public sealed class file
{
}
Run Code Online (Sandbox Code Playgroud)
在我将 VS 升级到 2022 年预览版 17.4.0 后,会发生这种情况。之前的代码编译得很好。我找不到任何信息表明 thatfile现在是 C# 中的关键字。我尝试翻译的解决方案使用 5.0SDK 进行构建,但目标是 .NET Framework 4.8。
我确实知道类型通常应使用大写名称,并且我可以通过更改为 来解决该问题class file,class @file但这是在自动生成的文件中,我无法更改生成器。应用一些sed技巧似乎是一种技巧。
为什么file这里被视为关键字以及它的用途是什么?我可以禁用它吗?
gil*_*uck 10
这是 VS 2022 17.4 中编译器引入的更改。file显然现在是类型声明的修饰符。
在 Visual Studio 2022 版本 17.4 中引入。从 C# 11 开始,类型不能命名为 file。编译器将报告所有此类类型名称的错误。要解决此问题,类型名称和所有用法必须使用 @ 转义:
class file {} // Error CS9056
class @file {} // No error...
Run Code Online (Sandbox Code Playgroud)
这样做是因为 file 现在是类型声明的修饰符。您可以在相关的 csharplang 问题中了解有关此更改的更多信息。
文档引用的其他链接:https ://github.com/dotnet/csharplang/issues/6011