Comparer deux objets .NET Array



Answers

Vous pouvez utiliser SequenceEqual :

string[] a = { "1", "2", "3" };
string[] b = { "1", "2", "3" };

bool areEqual = a.SequenceEqual(b); // true


string[] c = { "1", "2", "5" };
areEqual = a.SequenceEqual(c);      // false
Question

J'essaie de comparer deux tableaux .NET. Voici une implémentation évidente pour comparer des tableaux d'octets:

bool AreEqual(byte[] a, byte[] b){
    if(a.Length != b.Length)
        return false;
    for(int i = 0; i < a.Length; i++)
        if(a[i] != b[i])
            return false;

    return true;
}

Une approche plus raffinée peut être vu ici (via Google).

  1. Quel est le moyen le plus simple (en utilisant moins de code mais lisible) pour comparer deux tableaux .NET?
  2. Quelle est la manière la plus efficace de comparer deux tableaux .NET?



Peut-être quelque chose comme ça?

static bool AreEqual<T>(T[] a, T[] b) 
{
    bool areEqual = false ;
    T[] result = a.Intersect(b.AsEnumerable()).ToArray();
    areEqual = (result.Length == a.Length) && (result.Length == b.Length);
    return areEqual;
}

Je ne suis pas sûr du succès de la performance sur celui-ci.

MODIFIER

version révisée tenant compte des suggestions de Jon:

    static bool AreEqual<T>(T[] a, T[] b) 
    {
        return a.SequenceEqual(b);
    }



Links



Tags

.net .net   arrays