面试题答案
一键面试C#记录类型在不可变对象设计上相较于传统类的优势:
- 简洁语法:记录类型使用更简洁的语法来定义不可变对象。例如在声明属性和构造函数时,传统类需要更多样板代码来确保不可变性,而记录类型可通过位置参数等方式快速实现。
- 自动实现属性:记录类型默认属性是只读的,并且编译器会自动生成属性的访问器,确保对象状态不可变,无需手动设置
readonly
等修饰符。 - 值语义:记录类型默认支持值语义,即比较两个记录对象时,比较的是它们的属性值,而传统类默认比较的是对象引用,要实现值语义需手动重写
Equals
和GetHashCode
方法。
使用记录类型创建不可变坐标点对象示例:
public record Point(int X, int Y);
使用示例:
class Program
{
static void Main()
{
var point1 = new Point(10, 20);
var point2 = new Point(10, 20);
Console.WriteLine(point1 == point2); // 输出 True,因为记录类型默认按值比较
}
}