【问题标题】:C# 9.0 records ToString() [closed]C# 9.0 记录 ToString() [关闭]
【发布时间】:2020-09-16 07:09:46
【问题描述】:

如果我查看spec,它会说

记录包含一个合成方法,相当于声明如下的方法:public override string ToString();

但是使用sharplab,正如我在我的 VS16.8.0 Preview 2.1 代码中看到的那样:

record Rec(string S1, string S2);

ToString 不是自动生成的。

我在这里做错了什么?

【问题讨论】:

  • 可能是 Sharplab 中的错误?您是否尝试检查他们的问题跟踪器?
  • 预览 == “尚未完成”。切换到“master(2020 年 9 月 15 日)”以查看完成。
  • 你用的是哪个分支?当前的 .NET 5 版本是 RC1。即使在此之前,如果您使用master,则会生成ToString()

标签: c# c#-9.0


【解决方案1】:

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

记录可能是 C# 9 中最重要的新特性。它们提供了广泛的特性集(对于一种语言类型),其中一些需要 RC1 或更高版本(如 record.ToString())。

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

您需要最新的 Visual Studio 预览版(包括 Visual Studio for Mac)才能使用 .NET 5.0。

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


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    相关资源
    最近更新 更多