Object.GetHashCode()
が2つの同一のバイト配列に対して異なる値を返す理由がよくわかりませんが、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
それはなぜですか? また、すべての要素を比較せずに、2 つの巨大な配列をすばやく比較するにはどうすればよいですか?