c#不带大括号的记录
Posted
技术标签:
【中文标题】c#不带大括号的记录【英文标题】:c# record without curly brackets 【发布时间】: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
的大括号,这将如何工作?这是标准吗?
(如果我将记录更改为类,这将不起作用)
【问题讨论】:
docs.microsoft.com/en-us/dotnet/csharp/language-reference/… 见record_body
的定义
没有花括号的记录已经存在很长时间了:record Person(string Name, int Age)
?
谢谢@EmanuelVintilă 你能把这个作为答案发布吗
【参考方案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 引入了许多此类更改。***程序文件,***命名空间声明等,他们摆脱了强制花括号。
【讨论】:
以上是关于c#不带大括号的记录的主要内容,如果未能解决你的问题,请参考以下文章