C# 无法从MSDN中理解哈希代码相等性

C# 无法从MSDN中理解哈希代码相等性,c#,hash,C#,Hash,这是我从MSDN中找到的一些东西,我无法理解这句话。我非常感谢一个演示这一点的代码示例 两个相等的对象返回相等的哈希代码。但是,事实并非如此:相等的哈希代码并不意味着对象相等,因为不同的不相等对象可以具有相同的哈希代码 摘自: 谢谢大家 这可以通过应用。GetHashCode方法返回一个int,它最多可以表示大约40亿个值。在一个64位平台上,单个程序中一次可能存在超过40亿个不相等的对象!。因此,其中两个或多个对象必须从GetHashCode返回相同的值。两个出生在同一天的人出生在同一个月。然

这是我从MSDN中找到的一些东西,我无法理解这句话。我非常感谢一个演示这一点的代码示例

两个相等的对象返回相等的哈希代码。但是,事实并非如此:相等的哈希代码并不意味着对象相等,因为不同的不相等对象可以具有相同的哈希代码

摘自:


谢谢大家

这可以通过应用。GetHashCode方法返回一个int,它最多可以表示大约40亿个值。在一个64位平台上,单个程序中一次可能存在超过40亿个不相等的对象!。因此,其中两个或多个对象必须从GetHashCode返回相同的值。

两个出生在同一天的人出生在同一个月。然而,事实并非如此:两个出生在同一个月的人并不意味着他们出生在同一天,因为不同的人可以在不同的日子过生日

我非常感谢一个演示这一点的代码示例

b1是假的。b2是真的

只有40亿个散列码,但是有无限多的字符串。因此,其中至少有两个必须具有相同的哈希代码。我提供了其中两个;试着找到更多

有关详细信息,请参阅:


这是由于哈希冲突造成的。我不确定是否有一个好的方法在代码中演示这一点。你能更具体地说明你不明白什么吗?我不明白是事实,不是问题。你能用一个问题的形式来表达你的问题吗?或者dirichlet抽屉原理一次可能存在超过40亿个物体——这不是同时存在或不存在的物体的数量,但是它们可以接受的不同值的数量与边缘大小写的散列有关:地址被认为是值的一部分的对象。例如,考虑到64位数字的32位散列需要映射40亿个平方值,后者可能会将这些值映射到40亿个散列输出上,很明显,每个输出将平均有40亿个输入散列。如何复制ꂢꂢ 对于VisualStudio,当我尝试在VS中复制和粘贴此代码时,它会发生变化ꂢꂢ 像S,但不是真正的S,我无法从VS中超越它。
string s1 = "ꂢꂢ";
string s2 = "";
int h1 = s1.GetHashCode();
int h2 = s2.GetHashCode();
bool b1 = s1 == s2;
bool b2 = h1 == h2;