Warum SequenceEqual für List<T> gibt false zurück?

Hallo ich habe einige Probleme mit sequenceEqual, wenn ich die situation so:

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 };

und dies funktioniert sehr gut,

bool equal = list1.SequenceEqual(list2);

und zurück true;

aber wenn ich irgendeine Methode gibt List<Sentence>
zum Beispiel:

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 };
    }

und verwenden Sie es wie diese:

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

dann einfach, es zu überprüfen

bool equal = list1.SequenceEqual(list2);

gibt es 'false', bitte sagen Sie mir, warum? und wie es funktioniert?

Denn im zweiten Szenario sind Sie den verschiedenen Objekten, d.h. Ihre GetHash () - Methoden liefern unterschiedliche Werte. Im ersten Fall sind Sie exakt dieselben Objekte mit zwei unterschiedlichen Referenzen.

InformationsquelleAutor Tomasz Kowalczyk | 2013-02-19

Schreibe einen Kommentar