【问题标题】:c# record without curly bracketsc#不带大括号的记录
【发布时间】:2021-10-09 08:37:11
【问题描述】:

我偶然注意到以下代码可以编译(VS2022preview,c#10):

record R {
  public R() {}
  int I;
}

record B : R; // no curly brackets !

(见:https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA+tJQCYAIBKuA3gLABQuluAAgMwEAUAlMQL7lW4CWAdgC64AkgG5y7MuUzQ8AIVwgCwoA===

我很好奇如果没有 B 的大括号,这将如何工作?这是标准吗?

(如果我将记录更改为类,这将不起作用)

【问题讨论】:

标签: c# c#-10.0


【解决方案1】:

在记录https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/records 的C# 语言规范中,record_body 子句被指定为

record_body
    : '{' class_member_declaration* '}' ';'?
    | ';'
    ;

因此,大括号可以省略。

【讨论】:

    【解决方案2】:

    https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/tutorials/records

    文档说的差不多。 C# 9.0 引入了许多此类更改。顶级程序文件,顶级命名空间声明等,他们摆脱了强制花括号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      • 2021-01-11
      • 1970-01-01
      • 2011-04-08
      相关资源
      最近更新 更多