the reason I asked the question was because after reading the msdn advice on overloading this operator at the end of the page it mentioned:
A common error in overloads of operator == is to use (a == b), (a == null), or (b == null) to check for reference equality. This instead results in a call to the overloaded operator ==, causing an infinite loop. Use ReferenceEquals or cast the type to Object, to avoid the loop.
so I was wondering if I should implement the overload for the standard scenario.