C#中GetHashCode()的定义

时间:2013-12-28 17:07:44

标签: c# hash gethashcode iequalitycomparer

C#中的

Dictionary使用GetHashCode()来检索给定键的哈希码。我遍历整个Dictionary Class,但没有GetHashCode()函数的任何定义。它困扰着我,我不知道如何在这堂课中找到它的定义!

假设我正在使用Dictionary<int,int> a = new Dictionary<int,int>(),那么此结构中给定键的哈希码是什么? (例如,假设:a.Add(123,43)。如果桶的数量为50,则该密钥的哈希码是什么。

这是Insert()的{​​{1}}函数的一部分。

Dictionary class

2 个答案:

答案 0 :(得分:3)

如果您未指定IEqualityComparer,则Dictionary会使用EqualityComparer<T>.Default。这是一个只会在给定参数上调用object.GetHashCode的比较器。请看Int32.GetHashCode

答案 1 :(得分:2)

GetHashCode已在TKey类型上实施,而非在Dictionary类上实施。

对于您的示例使用的int.GetHashCode(),它定义为:

public override int GetHashCode()
{
    return this;
}

支持数量与哈希码值无关。