По сути, 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 () для этих объектов.