In my book they give a sample Complex class implementation and it
implements:
override bool Equals(object rhs)
{...}
public book Equals(Complex rhs) // IEquatable<Complex>
{...}
public static bool operator==(Complex lhs, Complex rhs)
{...}
My question is, what is the point of implementing Equals when
operator== is defined?
Also, when would the "object" version of Equals ever be called instead
of the specific type version? Obviously it would be called if you
passed an object, but I can't see why that would ever happen in
practice.