Bueno, se podría utilizar:
public static bool ByteArraysEqual(byte[] b1, byte[] b2)
{
if (b1 == b2) return true;
if (b1 == null || b2 == null) return false;
if (b1.Length != b2.Length) return false;
for (int i=0; i < b1.Length; i++)
{
if (b1[i] != b2[i]) return false;
}
return true;
}
(normalmente utilizar llaves para todo, pero yo pensé que iba a experimentar con este estilo de diseño sólo para un cambio ...)
Esto tiene algunas optimizaciones que SequenceEqual
no pueden (o no) realizar, como la verificación de longitud inicial. El acceso directo a la matriz también será un poco más eficiente que usar el enumerador.
La verdad es que es poco probable que haga una diferencia significativa en la mayoría de los casos ...
Se podría posiblemente hacerlo más rápido en código no administrado por lo que es comparar 32 o 64 bits a la vez en lugar de 8 - pero no quisiera codificar eso sobre la marcha.
Duplicado de http://stackoverflow.com/questions/43289/ – Hafthor