Records compare their stored values, not just object identity.

Value Equality

ValueEquality.cs
using System;

record Point(int X, int Y)
{
    public override string ToString()
    {
        return X + "," + Y;
    }
}

class Program
{
    static void Main()
    {
        int x = ;
        Point first = new Point(x, 4);
        Point second = new Point(x, 4);
        bool equal = first == second;

        Console.WriteLine($"x={x}");
        Console.WriteLine($"equal={equal}");
    }
}
using System;

record Point(int X, int Y)
{
    public override string ToString()
    {
        return X + "," + Y;
    }
}

class Program
{
    static void Main()
    {
        int x = ;
        Point first = new Point(x, 4);
        Point second = new Point(x, 4);
        bool equal = first == second;

        Console.WriteLine($"x={x}");
        Console.WriteLine($"equal={equal}");
    }
}
using System;

record Point(int X, int Y)
{
    public override string ToString()
    {
        return X + "," + Y;
    }
}

class Program
{
    static void Main()
    {
        int x = ;
        Point first = new Point(x, 4);
        Point second = new Point(x, 4);
        bool equal = first == second;

        Console.WriteLine($"x={x}");
        Console.WriteLine($"equal={equal}");
    }
}
value equality Value equality means two objects are equal when their data is equal.