J'ai deux tableaux d'octets avec exactement le même contenu. J'ai essayé:
if (bytearray1 == bytearray2) {...} else {...}
et
if (Array.Equals(bytearray1, bytearray2)) {....} else {...}
Tout le temps ça va à l'autre! Je ne sais pas pourquoi! J'ai vérifié les deux tableaux manuellement plusieurs fois !!!
Essayez d'utiliser la méthode d'extension SequenceEqual
. Par exemple:
byte[] a1 = new byte[] { 1, 2, 3 };
byte[] a2 = new byte[] { 1, 2, 3 };
bool areEqual = a1.SequenceEqual(a2); // true
L'opérateur ==
Compare par référence; ce sont deux cas différents.
Array.Equals
Est vraiment Object.Equals
, Qui appelle la méthode instances Equals
.
Étant donné que les tableaux ne remplacent pas Equals()
, cela se compare également par référence.
Au lieu de cela, vous devez appeler la méthode LINQ SequenceEqual()
.
L'opérateur ==
Et la méthode Equals testeront l'égalité de référence. Puisque vous avez deux tableaux séparés, ils ne seront jamais égaux.
Puisque vous souhaitez tester que les deux tableaux ont le même contenu dans le même ordre, essayez plutôt d'utiliser la méthode SequenceEqual
.