The use of `==` to compare two objects is expected to do a reference comparison. That is, it is expected to return `true` if and only if they are the same object instance. Overloading the operator to do anything else will inevitably lead to the introduction of bugs by callers.
[source,csharp]
----
public static bool operator ==(MyType x, MyType y) // Noncompliant: confusing for the caller
{
// custom implementation
}
----
On the other hand, overloading it to do exactly that is pointless; that's what `==` does by default.