GetHashCode的目的是什么?

Luk*_*101 -3 c#

为什么人们使用GetHashCode以及它用于什么.我对这个主题进行了谷歌搜索,并且不清楚为什么以及何时程序员使用这种方法.有人可以解释这个GetHashCode方法吗?

Jak*_*cki 5

该方法的目的是为哈希表创建一个键.

Eric Lippert的一篇非常好的文章:

http://ericlippert.com/2011/02/28/guidelines-and-rules-for-gethashcode/

什么是GetHashCode用于?

它的设计只对一件事有用:将对象放在哈希表中.由此得名.

为什么我们首先在Object上有这个方法?

理所当然,类型系统中的每个对象都应该提供GetType方法; 数据描述自身的能力是CLR类型系统的关键特征.并且有意义的是每个对象都应该有一个ToString,以便它能够打印出一个自身的表示形式作为字符串,以便进行调试.似乎合理的是,对象应该能够将自己与其他对象进行比较以获得相等.但是为什么每个对象应该能够自己散列以插入哈希表呢?似乎奇怪的是要求每个对象都能够做到.

我想如果我们今天从头开始重新设计类型系统,可能会以不同的方式进行散列,也许使用IHashable接口.但是当设计CLR类型系统时,没有泛型类型,因此通用哈希表需要能够存储任何对象.