C# › Equality: Equals, GetHashCode & IEquatable
What is the difference between reference equality (==) and value equality (Equals()) for a reference type by default?
BeginnerAnswer
For a reference type without overrides, both == and the inherited Object.Equals() check REFERENCE equality — whether two variables point to the exact SAME object in memory — not whether their content/data is logically equivalent.
var p1 = new Point(1, 2);
var p2 = new Point(1, 2);
Console.WriteLine(p1 == p2); // False -- different objects, same data
Console.WriteLine(p1.Equals(p2)); // False -- same, unless Equals is overriddenReal-world example Understanding why two 'identical-looking' objects don't compare as equal until you explicitly define value equality.