Estoy tratando de comparar dos matrices entre sí. Intenté este código y obtuve los siguientes errores.Comparación de matrices en C#
static bool ArraysEqual(Array a1, Array a2)
{
if (a1 == a2)
return true;
if (a1 == null || a2 == null)
return false;
if (a1.Length != a2.Length)
return false;
IList list1 = a1, list2 = a2; //error CS0305: Using the generic type 'System.Collections.Generic.IList<T>' requires '1' type arguments
for (int i = 0; i < a1.Length; i++)
{
if (!Object.Equals(list1[i], list2[i])) //error CS0021: Cannot apply indexing with [] to an expression of type 'IList'(x2)
return false;
}
return true;
}
¿Por qué me sale ese error? Fui por una solución de baja tecnología e hice esto que funciona bien, pero necesito copiarlo y pegarlo varias veces para cada tipo.
static bool ArraysEqual(byte[] a1, byte[] a2)
{
if (a1 == a2)
return true;
if (a1 == null || a2 == null)
return false;
if (a1.Length != a2.Length)
return false;
for (int i = 0; i < a1.Length; i++)
{
if (a1[i] != a2[i])
return false;
}
return true;
}
Gracias por la 2da vez hoy Marc: D –
esto debería funcionar solo para arreglos ordenados. si no están ordenados, necesitas al menos O (nlgn). – DarthVader
@ user177883 ¿Eh? Si las dos matrices están en orden diferente, ¿no deberían considerarse diferentes? – RandomInsano