为什么我需要覆盖C#中的.Equals和GetHashCode
发布时间:2020-12-15 05:41:04 所属栏目:百科 来源:网络整理
导读:参见英文答案 Why is it important to override GetHashCode when Equals method is overridden?12个 我正在使用Entity Framework 5.在我的C#代码中,我想比较两个对象是否相等.如果没有,那么我想发布更新. 我被告知我需要覆盖.Equals方法,然后是gethascode方
参见英文答案 >
Why is it important to override GetHashCode when Equals method is overridden?12个
我正在使用Entity Framework 5.在我的C#代码中,我想比较两个对象是否相等.如果没有,那么我想发布更新. 我被告知我需要覆盖.Equals方法,然后是gethascode方法.我的课程看起来像这样: public class Students { public int PersonId { get; set; } public string Name { get; set; } public int Age {get; set;} } 有人可以解释为什么我需要覆盖.Equals和.GetHashCode.也有人可以给我一个例子.特别是我不确定哈希码.请注意,我的PersonId是此类的唯一编号. 解决方法
出于多种原因你需要覆盖这两个原因.例如,HashCode用于字典和hashTable. equals用于您对数据结构(如Contains方法)进行的任何比较.一个例子:
public partial class myClass { public override bool Equals(object obj) { return base.Equals(obj); } public override int GetHashCode() { return base.GetHashCode(); } } 对于哈希码我会做的: public int GetHashCode() { return PersonId.GetHashCode() ^ Name.GetHashCode() ^ Age.GetHashCode(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- PostgreSQL's statistics target and histog
- 解决Flex工程加载报错 Error #2034: An invalid
- postgresql – 如何保持unnested数组中元素的原始
- xml session 的配置
- 高可用性 – SQLite可以与GlusterFS一起使用吗?
- c# – .NET中的DLL可以使用不同的扩展名,例如MLL
- 引用xml命名空间问题
- reactjs – React – 在componentDidMount中的se
- ruby-on-rails – 如何自动将Heroku pgbackup发送
- JSONObject j=JSONObject.fromObject(map) 这部分
热点阅读