将 Asp.Net Core 3.1 应用程序升级到 .Net 5 后某些 C# 9 功能不可用

Some C# 9 features not available after upgrading Asp.Net Core 3.1 app to .Net 5

我已将 Asp.Net Core 3.1 (MVC) 升级到 .Net 5,方法是将相应的 *.csproj 文件修改为:

<TargetFramework>net5.0</TargetFramework>
<LangVersion>9.0</LangVersion>

现在我可以使用 C# 9 target typing feature...

string s = new('c', 3); // compiles fine

...但我无法创建 record class:

public data class User
{
  // IDE1007 The name 'data' does not exist in the current context. 
}

我是不是漏掉了什么?

records types 的关键字现在是 record

public record Person
{
    public string LastName { get; }
    public string FirstName { get; }

    public Person(string first, string last) => (FirstName, LastName) = (first, last);
}

根据 record type specs,您应该使用 public record User 语法。

最好查看最终规格而不是博客 post 介绍,因为有些内容已更改。

您还可以参考 csharplang repo in GitHub to check the most recent specs, design meetings and proposals. For particular Records feature the initial issue #39 可能用于跟踪最新的更新和规格