C# 9.0 记录 ToString()

C# 9.0 records ToString()

如果我查看 spec 它说

The record includes a synthesized method equivalent to a method declared as follows: public override string ToString();

但是使用 sharplab 并且正如我在我的 VS16.8.0 预览版 2.1 代码中看到的那样:

record Rec(string S1, string S2);

ToString 不是自动生成的。

我做错了什么?

根据 Microsoft Announcing .NET 5.0 RC 1 的博客 post,您至少需要 .NET 5.0 RC 1 才能 record.ToString() 工作。

Records are perhaps the most important new feature in C# 9. They offer a broad feature set (for a language type kind), some of which requires RC1 or later (like record.ToString()).

要使用 .NET RC 1,您需要更新 Visual Studio:

You need the latest preview version of Visual Studio (including Visual Studio for Mac) to use .NET 5.0.

这可能意味着您需要 2020 年 9 月 14 日发布的 Visual Studio 2019 version 16.8 Preview 3


编辑: 就像评论中提到的 Hans Passant 一样,使用 master 分支应该可以解决 SharpLab 中的问题。这是 working example。如果您使用分支 C# 9:记录(2020 年 6 月 7 日),结果字符串中不包含记录的属性。