Pourquoi SequenceEqual pour une Liste<T> renvoie false?

Salut j'ai quelques problèmes avec sequenceEqual quand j'ai ce genre de situation:

Sentence s1 = new Sentence { Text = "Hi", Order = 1 };
Sentence s2 = new Sentence { Text = "Hello", Order = 2 };
List<Sentence> list1 = new List<Sentence> { s1, s2 };
List<Sentence> list2 = new List<Sentence> { s1, s2 };

et cela fonctionne bien

bool equal = list1.SequenceEqual(list2);

et retourne true;

mais quand j'ai une méthode qui retourne List<Sentence>
par exemple:

public List<Sentence> Getall()
    {
        Sentence s1 = new Sentence { Text = "Hi", Order = 1 };
        Sentence s2 = new Sentence { Text = "Hello", Order = 2 };

        return new List<Sentence> { s1, s2 };
    }

et de l'utiliser comme ceci:

List<Sentence> list1 = Getall();
List<Sentence> list2 = Getall();

et puis tout simplement, vérifier

bool equal = list1.SequenceEqual(list2);

il renvoie 'false', s'il vous plaît dites-moi pourquoi? et comment le faire fonctionner?

Parce que dans le deuxième scénario, ils sont différents des objets, c'est à dire leur GetHash() méthodes retournent des valeurs différentes. Dans le premier cas, ils sont exactement la même objets à l'aide de deux références.

OriginalL'auteur Tomasz Kowalczyk | 2013-02-19