在 C# 9.0 中,微软引入了 record 类型,用于简化不可变数据类型的定义。随后在 C# 10.0 中,又新增了 record struct(记录结构体),将 record 的便利性扩展到了值类型领域。本文将带你从零开始了解并掌握 C#记录结构体 的使用方法,即使是编程小白也能轻松上手!
传统的 struct 是 C# 中的值类型,适合表示轻量级、不可变或频繁复制的数据。而 record struct 是一种特殊的结构体,它自动提供了以下功能:
Equals 和 GetHashCode)with 表达式(创建副本并修改部分属性)ToString() 方法
定义 record struct 非常简单,只需在 struct 前加上 record 关键字即可。你可以使用主构造函数语法来快速声明属性:
// 定义一个 Point 记录结构体public record struct Point(int X, int Y); 上面这行代码等价于手动编写一个包含只读属性、构造函数、Equals、GetHashCode 和 ToString 的完整结构体!是不是非常方便?这就是 C#值类型记录 的魅力所在。
var p1 = new Point(1, 2);var p2 = new Point(1, 2);Console.WriteLine(p1 == p2); // 输出 TrueConsole.WriteLine(p1.Equals(p2)); // 输出 True var original = new Point(10, 20);var moved = original with { Y = 30 };Console.WriteLine(original); // Point { X = 10, Y = 20 }Console.WriteLine(moved); // Point { X = 10, Y = 30 } 你也可以在 record struct 中添加自定义方法或属性:
public record struct Point(int X, int Y){ public double DistanceToOrigin => Math.Sqrt(X * X + Y * Y); public Point Move(int deltaX, int deltaY) => this with { X = X + deltaX, Y = Y + deltaY };} | 特性 | record struct | record class | 普通 struct |
|---|---|---|---|
| 类型 | 值类型 | 引用类型 | 值类型 |
| 相等性 | 基于值 | 基于值 | 需手动实现 |
| with 表达式 | ✅ 支持 | ✅ 支持 | ❌ 不支持 |
当你需要一个轻量级、不可变、频繁复制且基于值比较的数据结构时,record struct 是理想选择。例如:
Point、Vector2)Color)Range)Money)记住:由于它是值类型,大量复制大尺寸的 record struct 可能影响性能,因此建议保持结构体小巧(通常小于 16 字节)。
record struct 是 C# 10 带来的强大特性,它结合了 struct 的性能优势与 record 的开发便利性。通过本文的 record struct教程,你应该已经掌握了它的基本用法、核心特性和适用场景。现在,就去你的项目中尝试使用这种现代 C# 编程方式吧!
关键词回顾:C#记录结构体、record struct教程、C#值类型记录、结构体编程指南。
本文由主机测评网于2025-12-22发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251211671.html