Suponiendo que la igualdad de matriz significa que ambas matrices tienen elementos iguales en índices iguales, existe la SequenceEqual
respuesta y la IStructuralEquatable
respuesta .
Pero ambos tienen inconvenientes, en cuanto al rendimiento.
SequenceEqual
La implementación actual no será un atajo cuando las matrices tengan diferentes longitudes, por lo que puede enumerar una de ellas por completo, comparando cada uno de sus elementos.
IStructuralEquatable
no es genérico y puede causar el encajonamiento de cada valor comparado. Además, no es muy fácil de usar y ya requiere codificar algunos métodos auxiliares para ocultarlo.
Puede ser mejor, en cuanto al rendimiento, usar algo como:
bool ArrayEquals<T>(T[] first, T[] second)
{
if (first == second)
return true;
if (first == null || second == null)
return false;
if (first.Length != second.Length)
return false;
for (var i = 0; i < first.Length; i++)
{
if (first[i] != second[i])
return false;
}
return true;
}
Pero, por supuesto, esa tampoco es una "forma mágica" de verificar la igualdad de la matriz.
Entonces, actualmente, no, no hay realmente un equivalente a Java Arrays.equals()
en .Net.