Record 是一种用于表示不可变数据模型的引用类型,通过简洁语法自动创建构造函数、只读属性、值语义比较、ToString() 和 with 表达式;1. 它强调“包含哪些数据”而非行为;2. 主构造函数属性默认只读,确保不可变性;3. with 表达式支持非破坏性修改;4. 相比 class 减少大量样板代码;5. 适用于 DTO、消息对象、配置等需值比较的场景。

.NET 中的 record 类型是一种专为表示不可变数据模型而设计的语言特性,首次在 C# 9.0 中引入。它简化了创建只读数据载体类的过程,让你用更少的代码获得值语义、清晰的结构和内置的行为。
Record 是一种引用类型,语法上类似于 class 或 struct,但语义上更侧重于“数据”的本质而非行为。它的核心目标是表达“这个对象包含哪些数据”,而不是“它能做什么”。
定义一个 record 非常简洁:
public record Person(string FirstName, string LastName, int Age);这一行代码自动为你生成:
不可变意味着一旦对象被创建,其状态就不能更改。这在函数式编程、并发处理、缓存和数据一致性场景中非常有用。
record 天然支持不可变性:
这样既保证了原对象的安全,又实现了数据演进。
使用 class 实现相同功能需要大量样板代码:
而 record 自动完成这些,减少出错,提升可读性。
另外,record 支持继承(但不推荐深度使用),也支持自定义方法和额外属性:
public record Employee(string Name, decimal Salary) : Person(Name, "", 0)record 特别适合以下情况:
如果你发现某个类大部分时间都在定义属性和写 Equals,那它很可能更适合定义为 record。
基本上就这些。record 不复杂,但容易忽略它的价值。用它来建模数据,代码会更清晰、更安全、更现代。
以上就是.NET中的Record类型是什么?编写不可变数据模型的简洁之道的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号