C# Record 类型详解
学习C# Record类型,掌握不可变数据模型和值相等性 · 难度:入门 · +15XP
Record 类型概述
C# 9 引入的 record 类型是一种引用类型,专为不可变数据建模设计。与 class 不同,record 默认提供基于值的相等性比较,而非引用相等性。Record 非常适合 DTO、配置对象和值对象。
基本语法
public record Person(string FirstName, string LastName);编译器自动生成:构造函数、属性、Equals/GetHashCode、ToString、Deconstruct 和 With 表达式。
关键特性
| 特性 | 说明 |
|---|---|
| 值相等性 | 比较所有属性值,而非引用 |
| 不可变性 | 属性默认 init-only |
| 解构 | 支持位置解构 |
| 非破坏性修改 | 使用 with 表达式创建副本 |
示例
var person1 = new Person("Alice", "Smith");
var person2 = new Person("Alice", "Smith");
Console.WriteLine(person1 == person2); // True
var person3 = person1 with { LastName = "Johnson" };
Console.WriteLine(person3); // Person { FirstName = Alice, LastName = Johnson }💡 练习提示:尝试创建 record 类,添加自定义方法,并测试 with 表达式和相等性。