Concept Flow - Value equality in records
Create record instance A
Create record instance B
Compare A and B
Return true
This flow shows how two record instances are created and compared by their values, returning true if all properties match.
public record Person(string Name, int Age); var p1 = new Person("Alice", 30); var p2 = new Person("Alice", 30); bool areEqual = p1 == p2; Console.WriteLine(areEqual);
| Step | Action | Evaluation | Result |
|---|---|---|---|
| 1 | Create p1 with Name="Alice", Age=30 | p1 = Person(Name="Alice", Age=30) | p1 created |
| 2 | Create p2 with Name="Alice", Age=30 | p2 = Person(Name="Alice", Age=30) | p2 created |
| 3 | Compare p1 == p2 | Compare all properties: Name and Age | True (values equal) |
| 4 | Print areEqual | Output value of areEqual | True |
| Variable | Start | After Step 1 | After Step 2 | After Step 3 | Final |
|---|---|---|---|---|---|
| p1 | null | Person(Name="Alice", Age=30) | Person(Name="Alice", Age=30) | Person(Name="Alice", Age=30) | Person(Name="Alice", Age=30) |
| p2 | null | null | Person(Name="Alice", Age=30) | Person(Name="Alice", Age=30) | Person(Name="Alice", Age=30) |
| areEqual | undefined | undefined | undefined | True | True |
C# records compare by value, not reference. Use '==' to check if all properties are equal. Records auto-generate equality methods. Different objects with same data are equal. If any property differs, equality is false.