You might encounter types that override both the == operator and the Equals method to check for value equality.
For example, a PersonHeight value type might behave this way. Both checks return true in the example below.
1
2
3
4
5
6
7
| PersonHeight ph1 = new PersonHeight(5, 10);PersonHeight ph2 = new PersonHeight(5, 10);// Both == operator and Equals method are checking// for value equalitybool check = ph1 == ph2; // truecheck = ph1.Equals(ph2); // true |
If you want to do a reference equality check, you can always use the Object.ReferenceEquals method. This method cannot be overridden and always does a reference equality check–i.e. compares two object references to see if they refer to the same object.
1
2
| // Check for reference equalitycheck = ReferenceEquals(ph1, ph2); // false |

