Tengo un problema con GetHashCode e Igual que he anulado para una clase. Estoy usando el operador == para verificar si ambos son iguales y espero que esto llame tanto a GetHashCode como a Igual si su código hash es el mismo para poder validar que son iguales.C# GetHashCode/Igual que la anulación no se llama
Pero para mi sorpresa, ninguno es llamado y el resultado de la prueba de igualdad es falso (mientras que de hecho debería ser cierto).
código de anulación:
public class User : ActiveRecordBase<User>
[...]
public override int GetHashCode()
{
return Id;
}
public override bool Equals(object obj)
{
User user = (User)obj;
if (user == null)
{
return false;
}
return user.Id == Id;
}
}
cheque Igualdad:
if (x == y) // x and y are both of the same User class
// I'd expect this test to call both GetHashCode and Equals
Si el '' == tenía, de hecho, llame a su método 'Equals', entonces sería causar un desbordamiento de pila, ya que utiliza el' '== operador en el objeto ... – Guffa
No hay nada en el código usted muestra que indicaría la necesidad de llamar a GetHashCode(). Eso solo se llama si usa su objeto como la clave de una colección. – RenniePet