Skip to main content
← Back to Code Arena
Medium Engineer SpeedRun value-types reference-types equality

Struct vs Class: The Equality Surprise

+180 XP · 5 min · attempt 1

Problem

Given:

    struct PointS { public int X, Y; }
    class  PointC { public int X, Y; }

How many of these comparisons evaluate to `true`?

    1. new PointS{X=1,Y=2}.Equals(new PointS{X=1,Y=2})
    2. new PointS{X=1,Y=2} == new PointS{X=1,Y=2}    // does this even compile?
    3. new PointC{X=1,Y=2}.Equals(new PointC{X=1,Y=2})
    4. object.ReferenceEquals(new PointC{X=1,Y=2}, new PointC{X=1,Y=2})

Count only lines that compile AND evaluate to true. Enter a single integer 0-4.

Starter

// Hint: line 2 won't compile - structs don't get == for free unless you write it.
// Default Equals on a struct does field-by-field via reflection (ValueType.Equals).
// Default Equals on a class uses reference equality.

Your answer

Playing as a guest — you'll be asked for a display name on submit. Log in to keep your XP across devices.