Using the equality ``++==++`` and inequality ``++!=++`` operators to compare two objects generally works. The operators can be overloaded, and therefore the comparison can resolve to the appropriate method. However, when the operators are used on interface instances, then ``++==++`` resolves to reference equality, which may result in unexpected behavior if implementing classes override ``++Equals++``. Similarly, when a class overrides ``++Equals++``, but instances are compared with non-overloaded ``++==++``, there is a high chance that value comparison was meant instead of the reference one.
It also does not raise an issue when one of the operands is ``++null++`` nor when one of the operand is cast to ``++object++`` (because in this case we want to ensure reference equality even if some ``++==++`` overload is present).