Я столкнулся с проблемой с GetHashCode и Equals, которую я переопределил для класса. Я использую оператор ==, чтобы проверить, равны ли они оба, и я ожидаю, что это вызовет оба метода GetHashCode и Equals, если их хэш-код одинаков для проверки того, что они действительно равны.
Но, к моему удивлению, ни один из них не был вызван, и результат теста на равенство ложен (хотя на самом деле он должен быть истинным).
Код отмены:
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;
}
}
Проверка на равенство:
if (x == y) // x and y are both of the same User class
// I'd expect this test to call both GetHashCode and Equals