| 1 | How do you correctly override Equals() and GetHashCode() together on a class, and why must they always be overridden as a pair? C# › Equality: Equals, GetHashCode & IEquatable | C# | Equality: Equals, GetHashCode & IEquatable | Intermediate |
| 2 | How does implementing IEquatable<T> improve on just overriding Equals(object), and why is it recommended alongside the override? C# › Equality: Equals, GetHashCode & IEquatable | C# | Equality: Equals, GetHashCode & IEquatable | Intermediate |
| 3 | How does HashCode.Combine() help you write a correct and well-distributed GetHashCode() implementation? C# › Equality: Equals, GetHashCode & IEquatable | C# | Equality: Equals, GetHashCode & IEquatable | Intermediate |
| 4 | Why is it critical that GetHashCode() only depend on IMMUTABLE fields, and what bug occurs if you violate this rule? C# › Equality: Equals, GetHashCode & IEquatable | C# | Equality: Equals, GetHashCode & IEquatable | Advanced |
| 5 | How do you correctly implement IComparable<T> alongside IEquatable<T>, and what consistency rule must they both satisfy together? C# › Equality: Equals, GetHashCode & IEquatable | C# | Equality: Equals, GetHashCode & IEquatable | Advanced |
| 6 | What is the difference between reference equality (==) and value equality (Equals()) for a reference type by default? C# › Equality: Equals, GetHashCode & IEquatable | C# | Equality: Equals, GetHashCode & IEquatable | Beginner |
| 7 | How does a struct's default Equals() behavior differ from a class's, even without any overrides? C# › Equality: Equals, GetHashCode & IEquatable | C# | Equality: Equals, GetHashCode & IEquatable | Beginner |
| 8 | How does record type equality work by default, and how does it differ fundamentally from a regular class's default equality? C# › Equality: Equals, GetHashCode & IEquatable | C# | Equality: Equals, GetHashCode & IEquatable | Advanced |
| 9 | How should Equals() be implemented differently for a class designed to support INHERITANCE, to correctly handle equality between a base type and derived types? C# › Equality: Equals, GetHashCode & IEquatable | C# | Equality: Equals, GetHashCode & IEquatable | Advanced |
| 10 | How does structural (deep) equality for collections work, and why doesn't List<T>.Equals() perform element-by-element comparison by default? C# › Equality: Equals, GetHashCode & IEquatable | C# | Equality: Equals, GetHashCode & IEquatable | Advanced |