C# 11:VS 2022 不支持“field”关键字

Man*_*and 3 c# visual-studio c#-11.0

我有一个 .NET 7.0 WinForms 项目,该项目在其属性中声称将语言版本设置为 11.0(并且我在 .csproj 中进行了操作以使其成为“最新”和“预览”等)。

ReSharper 的检查表明我可以field在很多地方使用该关键字,但是当我这样做时,VS 讨厌重构的结果,并且我会收到编译错误(“名称‘字段’在当前上下文中不存在”等) 。

我完全不明白为什么我的 VS(我什至尝试过预览版——我使用的是 Professional 2022 版本 17.5.0 预览版 6.0)不想喜欢 C# 11。

这是我安装的 SDK 的内容,以防万一出现问题......

C:\>dotnet --list-sdks
7.0.103 [C:\Program Files\dotnet\sdk]
7.0.200-preview.22628.1 [C:\Program Files\dotnet\sdk]
7.0.200 [C:\Program Files\dotnet\sdk]
Run Code Online (Sandbox Code Playgroud)

这是产生错误的代码区域之一。

C:\>dotnet --list-sdks
7.0.103 [C:\Program Files\dotnet\sdk]
7.0.200-preview.22628.1 [C:\Program Files\dotnet\sdk]
7.0.200 [C:\Program Files\dotnet\sdk]
Run Code Online (Sandbox Code Playgroud)

private int _updateDepth; // this is "grayed" by R# with hint to address

private int UpdateDepth
{
    get => _updateDepth;
    set
    {
        _updateDepth = value;
        if (!SkipHandlers && !SkipCallbacks && UpdateDepth is 0)
            RunGameDataChangedCallback();
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过(因为在阅读有关 field 关键字时,似乎说该属性必须初始化) = 0;在最后的右大括号之后添加,但这没有帮助。

编译器错误

CS0501  'GameControl.UpdateDepth.get' must declare a body because it is not marked abstract, extern, or partial
CS0103  The name 'field' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jul*_*ian 7

根据C# GitHub 存储库的评论,该关键字的实现存在问题field,因此它没有进入 C# 11。它可能(也可能不会)出现在 C# 12 中。