相关疑难解决方法(0)

如何在不破坏现有Object.Equals()的情况下检查两个对象的属性是否相等?

基本上,GethashCode是不同的,即使它们包含属性的SAME值...那么为什么默认返回diff hashcodes?

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?
Run Code Online (Sandbox Code Playgroud)

有没有更合适的方法来实现它,所以我不会破坏Object.Equals如何为我的对象工作,但我仍然可以根据参数值进行自己的相等检查?

我问的原因是因为我有一个服务:SynchronizeUsers()下载一组用户.我宁愿只更新需要更新的那些,删除同步所说的那些,而不是清除我的用户缓存,而是添加新的.但是,我不能只对这些对象做Object.Equals().

c# equals object hashcode

11
推荐指数
3
解决办法
3万
查看次数

标签 统计

c# ×1

equals ×1

hashcode ×1

object ×1