Hashtable/Dictionary碰撞

Joa*_*nge 4 c# string math dictionary hashtable

仅使用标准英文字母和下划线,最多可以使用多少个字符,而不会在哈希表或字典中引起潜在的冲突.

所以字符串如:

blur
Blur
b
Blur_The_Shades_Slightly_With_A_Tint_Of_Blue
Run Code Online (Sandbox Code Playgroud)

...

Jon*_*eet 15

无法保证您不会在单个字母之间发生碰撞.

可能不会,但未string.GetHashCode指定使用的算法,并且可能会更改.(特别是它在.NET 1.1和.NET 2.0之间发生了变化,这会让人们认为它不会改变.)

请注意,哈希代码冲突不会阻止设计良好的哈希表工作 - 您应该仍然能够获得正确的值,如果它们具有相同的哈希值,则可能需要使用相等性检查多个密钥码.

任何依赖哈希码唯一的字典都缺少关于哈希码的重要信息,IMO :)(除非它在非常特殊的条件下运行,它绝对知道它们是唯一的,即它使用完美的哈希函数.)