c# - C#9 中多条记录的用例是什么?

标签 c# record

C#9 终于添加了记录!我一直在等待这个,太棒了!但我想知道使用 { get; set; } 记录有什么意义?似乎记录应该是不可变的,并且对它们的所有属性都使用 { get; init; }。也许我太习惯于使用不可变数据,但我不明白可变记录的意义。它似乎增加了代码中错误的可能性。我是否错过了一个非常明显且有用的用例?

最佳答案

首先:record 只是一个快速、简短的符号,用于声明一个类,其中包含一些自动免费添加的有用功能 - 但最终结果仍然是一个与其他类一样的类。它是语法糖,实际上有两种口味。
超短 位置语法 使所有属性 init-only :

record Person(string FirstName, string LastName);
不太短的 名义语法 使开发人员负责为每个属性指定它:
record Person
{
    public string FirstName { get; set; }
    public string LastName { get; init; }
}
提供这两种表示法的原因可能是没有一刀切。名义语法允许快速创建具有自定义 (im) 可变性的常规类,并且仍然免费获得复制构造函数、克隆、散列和比较/相等。

关于c# - C#9 中多条记录的用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67060547/

相关文章:

c# - 如何检测两张图片是否相似?

c# - 亚马逊网络服务工作示例

c# - 多个 Access-Control-Allow-Origin header

c# - 在 .net core 中使用 linq2db 时获取 "Could not load file or assembly ' System.EnterpriseServices""

mongodb - 当案例类包含 Scala 枚举时,如何使用 Rogue 和 MongoCaseClassField 更新 mongo 记录

sql - 在记录水平上标记差异

c# - 传输数据的 Symbol.WPAN.Bluetooth 示例

ios - 我无法更新 Parse 中的记录;错误 : "object not found for update (Code: 101, Version: 1.2.16)"

Mysql - 查询显示两个链接表的单个记录,其条件仅在其中一个中

c++ - 如何使用 ffmpeg 录制 Windows 屏幕