.net 泛型字典类键值

.net 泛型字典类键值,.net,generics,.net-2.0,c#-2.0,.net,Generics,.net 2.0,C# 2.0,我知道,在哈希表中,键字符串的哈希值是唯一的,因为如果有两个相同的字符串,GetHashCode()函数将用第二个字符串覆盖第一个字符串 这将确保不存在由具有相同值的不同字符串生成的相同哈希值 但对于泛型字典类,我们可以指定任何类型作为键的类型参数 因此,该键生成的哈希值不能是唯一的,因为它不执行字符串行为。是这样吗 如果不是,这个通用场景背后的过程是什么 提前感谢, Jay…散列仅用于将项目放入“bucket”以便快速查找。哈希值不用于确定相等性 因此,不要担心,如果两个字符串(或其他任何字符

我知道,在哈希表中,键字符串的哈希值是唯一的,因为如果有两个相同的字符串,GetHashCode()函数将用第二个字符串覆盖第一个字符串

这将确保不存在由具有相同值的不同字符串生成的相同哈希值

但对于泛型字典类,我们可以指定任何类型作为键的类型参数

因此,该键生成的哈希值不能是唯一的,因为它不执行字符串行为。是这样吗

如果不是,这个通用场景背后的过程是什么

提前感谢,


Jay…

散列仅用于将项目放入“bucket”以便快速查找。哈希值不用于确定相等性


因此,不要担心,如果两个字符串(或其他任何字符串)返回完全相同的哈希值,它们确实会进入同一个bucket,但它们仍然是单独的“键”。

哈希值仅用于将项目放入“bucket”以便快速查找。哈希值不用于确定相等性


因此,不要担心,如果两个字符串(或其他任何字符串)返回完全相同的哈希值,它们确实会进入同一个存储桶,但它们仍然是单独的“键”。

哈希值由每个对象实现的GetHashCode()获得。从System.Object继承的默认实现不保证不同对象的唯一返回值

但是,散列值不需要对对象是唯一的,因为它们只用于加快搜索速度,并且您的键类仍然需要一个相等实现来确定键是否相等


因此,如果使用System.Object作为键,它将根据引用的相等性来区分一个键和另一个键,因为它将使用Object.Equals来解决这个问题。

哈希值由每个对象实现的GetHashCode()获得。从System.Object继承的默认实现不保证不同对象的唯一返回值

但是,散列值不需要对对象是唯一的,因为它们只用于加快搜索速度,并且您的键类仍然需要一个相等实现来确定键是否相等

所以,如果您使用System.Object作为键,它将根据引用的相等性来区分一个键和另一个键,因为它将使用Object.Equals来解决这个问题