GetHashCode
来源:互联网 发布:费用报销软件 编辑:程序博客网 时间:2024/05/19 12:13
在判断时,并不是直接上来就调用Equals方法,而是会先调用GetHashCode方法,计算出待添加对象的一个散列值:
- 如果这个散列值不命中,那就说明这个对象一定不在散列中,可以添加;
- 如果这个散列值命中了,那也不能说明这个对象一定在散列中,因为可能散列值冲突了,所以,要继续调用Equals方法,来看看这个散列值命中的对象,到底在不在散列表里。
Equals和GetHashCode的关系:
Equals方法和GetHashCode方法的重写应该同时存在。如果Equals方法返回的结果是true,那么GetHashCode方法返回的结果应该相同。如果GetHashCode方法返回的结果相同,那么Equals方法返回的结果不一定是true。
如果GetHashCode返回的结果相同的话,就没必要调用Equals了;如果GetHashCode返回的结果不同,才会再调用Equals方法,做精确对比。
class Student{ public string FirstName{ get;private set;}public string LastName{ get;private set;}public Student(string firstName,string lastName){ this.FirstName = firstName;this.LastName = lastName;}public override bool Equals(object obj){ Console.WriteLine("Equals");if(obj == null || this.GetType() != obj.GetType()) return false;return this.FirstName == ((Student)obj).FirstName && this.LastName == ((Student)obj).LastName;}public override int GetHashCode(){ Console.WriteLine("GetHashCode");return this.FirstName.GetHashCode();}void Main(){ Student student1 = new Student("Jun","Lei"); Student student2 = new Student("Kaifu","Li"); Student student3 = new Student("Jun","Zhu"); var dic = new Dictionary<Student,object>(); dic[student1] = new object(); Console.WriteLine("=================="); Console.WriteLine(dic.ContainsKey(student2)); Console.WriteLine("=================="); Console.WriteLine(dic.ContainsKey(student3));}}
阅读全文
0 0
- getHashCode()
- GetHashCode
- 浅谈 GetHashCode
- GetHashCode解析
- GetHashCode 与HashTable ,Dictionary
- GetHashCode与Equals双刃剑
- GetHashCode方法学习笔记
- Object.getHashCode()之我见
- 函数GetHashCode()的缺陷
- 另谈GetHashCode函数
- GetHashCode()用来干啥?
- C#重写GetHashCode()
- C#详析GetHashCode方法
- 理解GetHashCode()方法的缺陷
- c# gethashcode和equal重写
- .NET(C#):GetHashCode 的作用
- .NET(C#):GetHashCode 的作用
- 不可小瞧的GetHashCode函数
- 利用C++编译器去编译C的库
- Prism研究(for WPF & Silverlight)6.StockTrader RI研究
- 事件冒泡的阻止和应用场景
- 细思极恐,人工智能是否真的会形成自我意识?
- 多方法教你如何去掉WPS文字2013中的换行符
- GetHashCode
- Java虚拟机专题之字节码指令(读书笔记)
- shell 脚本(二)
- selenium+python实现百度贴吧自动签到
- 幼儿园的战争
- 判断android的键盘弹出和收缩
- 欧拉角万向节锁问题
- Heatmap.js – 最强大的 Web 动态热图
- Prism研究(for WPF & Silverlight)7.View Injection和View Discovery
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
和泓假日阳光
三亚和泓假日阳光
2019年国庆节放假
2019年国庆节放假时间表
活灵活现眼放光生肖
一斤面粉放10克酵母会有毒吗
500克面粉放多少酵母
放克
一包100克白凉粉放多少水
通草下奶放多少克
通草猪蹄汤一次放多少克
牧宋 嬴放勋
放单是什么意思
淘宝放单是什么意思
淘宝接单放单平台
放单主持
放单
万人app放单平台
任务放单平台
放单主持找商家技巧
淘宝放单主持的利弊
单电源运放电路图
is正规放单平台
淘宝放单
淘宝放单流程
放单软件
保险单 放车上
放车单
京东放单
放箱单
车上要放保险单吗
放放
新手怎么找商家来放单
放哨
放哨什么意思
放哨是什么意思
乖放在里面不许拿出来
大姨子把逼放在我嘴上
总裁把她放在钢琴上深入浅出
不出来放在里面睡
母乳在40度温奶器可以放多久