C#的记录类型(Record)是什么?如何用它创建不可变对象?

来源:这里教程网 时间:2026-02-21 17:31:41 作者:

记录类型(Record)是 C# 9 引入的一种引用类型,专门用于简化不可变数据模型的定义。它本质上是类的特殊形式,自带值语义、内置相等性比较和简洁的语法,特别适合表示“数据容器”。

记录类型的核心特点

值语义相等性:两个记录实例只要所有属性值相同,就被认为是相等的,即使它们是不同的对象。这与普通类按引用比较不同。

不可变性支持:通过

init
访问器实现构造后属性不可变。

简洁的创建语法:支持使用 with 表达式进行非破坏性修改。

如何用记录创建不可变对象

1. 定义一个简单记录

使用

record
关键字声明,属性使用
init
而不是
set
,确保只能在初始化时赋值:

public record Person(string FirstName, string LastName, int Age);

这是“位置记录”,编译器自动生成只读属性、构造函数和

Deconstruct
方法。

2. 使用对象初始化器创建实例

利用

init
属性或主构造函数传参创建对象:

var person = new Person("张", "三", 25);
// 或者使用具名方式
var person2 = new Person { FirstName = "李", LastName = "四", Age = 30 };

一旦创建,这些属性就不能再被修改。

3. 使用 with 表达式“修改”不可变对象

要基于现有对象创建新实例并更改部分值,使用

with

var updated = person with { Age = 26 };

这会创建一个新对象,原对象保持不变,实现非破坏性更新。

相关推荐

热文推荐