Comparing two byte arrays in .NET Comparing two byte arrays in .NET arrays arrays

Comparing two byte arrays in .NET


You can use Enumerable.SequenceEqual method.

using System;using System.Linq;...var a1 = new int[] { 1, 2, 3};var a2 = new int[] { 1, 2, 3};var a3 = new int[] { 1, 2, 4};var x = a1.SequenceEqual(a2); // truevar y = a1.SequenceEqual(a3); // false

If you can't use .NET 3.5 for some reason, your method is OK.
Compiler\run-time environment will optimize your loop so you don't need to worry about performance.


P/Invoke powers activate!

[DllImport("msvcrt.dll", CallingConvention=CallingConvention.Cdecl)]static extern int memcmp(byte[] b1, byte[] b2, long count);static bool ByteArrayCompare(byte[] b1, byte[] b2){    // Validate buffers are the same length.    // This also ensures that the count does not exceed the length of either buffer.      return b1.Length == b2.Length && memcmp(b1, b2, b1.Length) == 0;}


There's a new built-in solution for this in .NET 4 - IStructuralEquatable

static bool ByteArrayCompare(byte[] a1, byte[] a2) {    return StructuralComparisons.StructuralEqualityComparer.Equals(a1, a2);}