record 类型入门
record 是 C# 9 引入的引用类型,自带值相等比较和 with 表达式。它专门用来表示不可变的数据模型,比 class 省很多样板代码。
用 record 写 DTO 特别爽:一行 public record User(string Name, int Age); 就自动生成构造函数、属性、Equals、GetHashCode、ToString。with 表达式可以基于现有对象创建新对象并修改部分属性。
注意:record 默认是不可变的(init 属性),如果想要可变用 record class。record struct 是值语义版本。
代码示例
// 一行定义 record
public record User(string Name, int Age);
// 自动生成了构造函数、属性、Equals、ToString
var u1 = new User("Tom", 25);
Console.WriteLine(u1); // User { Name = Tom, Age = 25 }
// 值相等比较:内容相同就相等
var u2 = new User("Tom", 25);
Console.WriteLine(u1 == u2); // True(class 是 False)
// with 表达式:基于现有对象创建新对象
var u3 = u1 with { Age = 26 };
Console.WriteLine(u3); // User { Name = Tom, Age = 26 }
Console.WriteLine(u1.Age); // 25,原对象不变
// record 也可以加方法
public record Point(int X, int Y)
{
public double Distance => Math.Sqrt(X*X + Y*Y);
}
学习小结:以上是我学习这个知识点时的笔记和心得。技术学习没有捷径,多写多练多踩坑,自然就掌握了。如果这篇笔记对你有帮助,欢迎继续看看其他文章。