title: Why does Microsoft recommend skip implementing equality operator for reference types?
body: <p>According to <a href="http://msdn.microsoft.com/en-us/library/system.object.equals.aspx" rel="nofollow noreferrer">MSDN</a>: <em>Most reference types must not overload the equality operator, even if they override Equals. However, if you are implementing a reference type that is intended to have value semantics, such as a complex number type, you must override the equality operator.</em></p>
  
  <p>What is the best practice to implement <em>equals</em> method and <em>equality operator</em> for a typical domain entity like Customer?</p>
  
  <p>Should it implement <em>equals</em> method to return <strong>true</strong> if identities of two entities are the same? What if entity is not immutable? What if both entities are new and their identities have empty values. And what about equality operator?</p>
  
  <p>As <a href="https://stackoverflow.com/users/23283/jaredpar">JaredPar</a> mentioned <a href="https://stackoverflow.com/questions/814878/c-sharp-difference-between-and-equals#814889">here</a> <em>Equals will actually measure the equality of the values while == will measure whether or not they are the same reference.</em></p>