В принципе, GethashCode отличается, хотя они содержат ТОЧНЫЕ значения для свойств... поэтому почему по умолчанию возвращаются хэш-коды diff?
public class User
{
public Int32 Id { get; set; }
public String Username { get; set; }
}
User a = new User();
a.Id = 1;
a.Username = "Hello";
User b = new User();
b.Id = 1;
b.Username = "Hello";
Console.WriteLine("Hash A: {0} | Hash B: {1}", a.GetHashCode(), b.GetHashCode());
//Hash A: 37121646 | Hash B: 45592480 <-- these values change each time I rerun the app?
Есть ли более правильный способ сделать это, чтобы я не нарушал работу Object.Equals для моих объектов, но все еще могу иметь свою собственную проверку равенства на основе значений параметров?
Я спрашиваю, потому что у меня есть служба: SynchronizeUsers()
, которая загружает массив пользователей. Вместо того, чтобы очищать мой кеш пользователей, я бы скорее просто обновил те, которые нужно обновить, удалить те, о которых говорит синхронизация, и добавить новые. Но я не могу просто сделать Object.Equals() на этих объектах.