1

プログラムを書いているときに、最近奇妙な問題に遭遇しました。8 つの値の 2 つのバイト配列で、それぞれの値が同じである場合、==演算子を使用すると等しくないと報告され、値GetHashCode()も異なります。

byte[] id = new byte[8] {
    0x00, 0x00, 0x00, 0x00,
    0xF8, 0x00, 0x00, 0x00
};
byte[] od = new byte[8] { 
    0x00, 0x00, 0x00, 0x00,
    0xF8, 0x00, 0x00, 0x00 
};

Console.WriteLine(id == od);
Console.WriteLine(id.GetHashCode());
Console.WriteLine(od.GetHashCode());
Console.ReadLine();

このプログラムのコンソールへの出力は次のとおりです。

False
45653674
41149443

これらのバイト配列が等しいと見なされない理由について、誰かが入力を提供できますか?

4

3 に答える 3

5

これは、idodが異なるポインターを持つ 2 つの別個の配列であるためです。それらのエントリが同じかどうかを知りたい場合は、値ごとに等しいかどうかを確認する必要があります。

于 2013-05-11T09:47:47.663 に答える
0

これは、と が異なるオブジェクトidod指しているために発生します。

クラスを使用Enumerableして、配列の内容を比較できます

Enumerable.SequenceEqual(id, od);

于 2013-05-11T09:50:00.660 に答える