Skip to main content

Override Equals and GetHashCode

  • Override Equals and GetHashCode

Quando for sobrescrever um dos dois, deve se sobrescrever o outro também

public class ImaginaryNumber : IEquatable<ImaginaryNumber>
{
public double RealNumber { get; set; }
public double ImaginaryUnit { get; set; }

public override bool Equals(object obj)
{
return Equals(obj as ImaginaryNumber);
}

public bool Equals(ImaginaryNumber other)
{
//MESMAS PROPRIEDADES USADAS AQUI DEVEM SER USADAS NO GETHASHCHODE
return other != null &&
RealNumber == other.RealNumber &&
ImaginaryUnit == other.ImaginaryUnit;
}

public override int GetHashCode()
{
return HashCode.Combine(RealNumber, ImaginaryUnit);
}
}