Aviso do compilador (nível 3) CS0659

'class' overrides Object.Equals(object o) but does not override Object.GetHashCode()

O compilador detectou uma substituição do método Object.Equals, mas nenhuma substituição do método Object.GetHashCode. Uma substituição de Equals implica que você também deseja substituir GetHashCode.

O seguinte código gera o erro CS0659:

// CS0659.cs  
// compile with: /W:3 /target:library  
class Test
{  
   public override bool Equals(object o) { return true; }   // CS0659  
}  
  
// OK  
class Test2  
{  
   public override bool Equals(object o) { return true; }  
   public override int GetHashCode() { return 0; }  
}  

Confira também