C# 中的记录是一个类或结构,它为使用数据模型提供特定的语法和行为。
C# 9 引入了 record
类型,可创建此引用类型而不创建类或结构。 记录是带有内置行为的类,用于将数据封装在不可变类型中。 C# 10 引入了 record struct
值类型。 记录(record class
或 record struct
)提供以下功能:
- 用于创建具有不可变属性的引用类型的简明语法。
- 值相等性。 两个记录类型的变量在它们的类型和两个记录中每个字段的值都相同时,它们是相等的。 类使用引用相等性,即:如果类类型的两个变量引用同一对象,则这两个变量是相等的。
- 非破坏性变化的简明语法。 使用
with
表达式,可以创建作为现有实例副本的新记录实例,但更改了指定的属性值。 - 显示的内置格式设置。
ToString
方法输出记录类型名称以及公共属性的名称和值。 - 支持记录类中的继承层次结构。 记录类支持继承。 记录结构不支持继承。
何时使用记录
在下列情况下,请考虑使用记录而不是类或结构:
- 你想要定义依赖值相等性的数据模型。对记录来说,值相等性表示当类型匹配且所有属性和字段值都匹配时,记录类型的两个变量相等。
- 你想要定义对象不可变的类型。不可变类型会阻止你在对象实例化后更改该对象的任何属性或字段值。
记录与类和结构的区别
声明和实例化类或结构时使用的语法与操作记录时的相同。只是将 class
关键字替换为 <