Sto provando a confrontare due matrici l'una con l'altra. Ho provato questo codice e ho ottenuto i seguenti errori.Confronto di matrici in 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;
}
Perché ottengo quell'errore? Ho optato per una soluzione low-tech e ho fatto ciò che funziona, ma ho bisogno di copiarlo/incollarlo più volte per ogni 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;
}
Grazie per la seconda volta oggi Marc: D –
questo dovrebbe funzionare solo per gli array ordinati. se non sono ordinati hai bisogno di almeno O (nlgn). – DarthVader
@ user177883 Eh? Se i due array sono in ordine diverso, non dovrebbero essere considerati diversi? – RandomInsano