MST

星途 面试题库

面试题:C# 记录类型(Record)在不可变对象设计中的基础应用

请简述C#记录类型(Record)相较于传统类在不可变对象设计上的优势,并给出一个简单示例,说明如何使用记录类型创建一个不可变的坐标点对象,包含X和Y属性。
43.3万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

C#记录类型在不可变对象设计上相较于传统类的优势:

  1. 简洁语法:记录类型使用更简洁的语法来定义不可变对象。例如在声明属性和构造函数时,传统类需要更多样板代码来确保不可变性,而记录类型可通过位置参数等方式快速实现。
  2. 自动实现属性:记录类型默认属性是只读的,并且编译器会自动生成属性的访问器,确保对象状态不可变,无需手动设置readonly等修饰符。
  3. 值语义:记录类型默认支持值语义,即比较两个记录对象时,比较的是它们的属性值,而传统类默认比较的是对象引用,要实现值语义需手动重写EqualsGetHashCode方法。

使用记录类型创建不可变坐标点对象示例:

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,因为记录类型默认按值比较
    }
}