没有大括号的c#记录

  • 本文关键字:记录 c# c#-10.0
  • 更新时间 :
  • 英文 :


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

record R {
public R() {}
int I;
}
record B : R; // no curly brackets !

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

我很好奇没有花括号的B是如何工作的?这符合标准吗?

(如果我将记录更改为class,则此操作不起作用)

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

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

因此,可以省略大括号。

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

和文档上说的差不多。c# 9.0引入了许多这样的变化。顶级程序文件,顶级命名空间声明等等,他们去掉了强制花括号。

相关内容

  • 没有找到相关文章

最新更新