I ran into this situation today. I have an object which I\'m testing for equality; the Create() method returns a subclass implementation of MyObject.
MyObject
a == b checks if they reference the same object.
a.Equals(b) compares the contents.
This is a link to a Jon Skeet article from 2004 that explains it better.