While implementing an ==
operator, I have the feeling that I am missing some essential points.
Hence, I am searching some best practices around that.
Here are some related questions I am thinking about:
IEquatable<T>
-like interface? Or overriding object.Equals
?!=
operator?(this list might not be exhaustive).
I would follow Microsoft's Guidelines for Overloading Equals() and Operator ==.
edit: Microsoft's guidelines contain this important remark, which seems to confirm Henk's answer:
By default, the operator == tests for reference equality by determining if two references indicate the same object, so reference types do not need to implement operator == in order to gain this functionality. When a type is immutable, meaning the data contained in the instance cannot be changed, overloading operator == to compare value equality instead of reference equality can be useful because, as immutable objects, they can be considered the same as long as they have the same value. Overriding operator == in non-immutable types is not recommended