如何比较两个字节数组

我有两个字节数组,内容完全相同。 我试过了:

if (bytearray1 == bytearray2) {...} else {...} 

 if (Array.Equals(bytearray1, bytearray2)) {....} else {...} 

一直到别的地方! 我不知道为什么! 我手动检查了两个arrays几次!

尝试使用SequenceEqual扩展方法。 例如:

 byte[] a1 = new byte[] { 1, 2, 3 }; byte[] a2 = new byte[] { 1, 2, 3 }; bool areEqual = a1.SequenceEqual(a2); // true 

==运算符通过引用进行比较; 这是两个不同的例子。

Array.EqualsObject.Equals ,它调用实例Equals方法。
由于数组不会覆盖Equals() ,因此也通过引用进行比较。

相反,您应该调用LINQ SequenceEqual()方法。

==运算符和Equals方法都将测试引用相等性。 由于你有两个独立的数组,它们永远不会相等。

由于您要测试两个arrays具有相同顺序的相同内容,请尝试使用SequenceEqual方法。

作为替代方案,如果您不习惯使用LINQ ,可以使用System.Convert类…

 byte[] a1; byte[] a2; if (System.Convert.ToBase64String(a1) == System.Convert.ToBase64String(a2)) { doSomething(); } else { doSomethingElse(); }