天天看点

c#中Equals方法和GetHashCode

c#中,一般来说,重写了Equals方法,就要重写GetHashCode

关于Equals方法,一般都会按照自己的需求编写

关于GetHashCode,MS说的很清楚

两个相同的对象(即Equals方法返回true)必须返回相同的hash code

两个不相同的对象,返回true或者false都可以

如果两个相同的对象,hash code返回false了,结果会怎么样?

如上面代码,现在相同的对象一定返回相同的hashcode,因为他们的Id 相同,可以查看字典的元素

c#中Equals方法和GetHashCode

字典只有两个元素,因为stu1和stu2是同一个对象,只能代表一个键

如果修改成这样的代码

现在的结果变成了3个元素,原因是stu1和stu2的哈希值不相同,就不需要再比较Equals方法的结果了

c#中Equals方法和GetHashCode

继续阅读