我不太明白为什么Object.GetHashCode()
为两个相同的字节数组返回不同的值,但为非IEnumerable
值类型的对象返回相同的值。例如:
byte e = 123;
Console.WriteLine(e.GetHashCode());
byte f = 123;
Console.WriteLine(f.GetHashCode());
输出是
123
123
但当
byte[] a = new byte[3] { 1, 2, 3 };
Console.WriteLine(a.GetHashCode());
byte[] b = new byte[3] { 1, 2, 3 };
Console.WriteLine(b.GetHashCode());
输出是
46104728
12289376
为什么会这样,如何在不比较每个元素的情况下快速比较两个巨大的数组?