Finden Sie ein Element in einem List<T>, indem Sie einen Beispiel-object-Instanz
Warum gibt es eine List<T>.Contains(T)
- Methode, aber keine List<T>.Find(T)
Methode? Nur die Find
s, support-Prädikate unterstützt werden. Wenn wir eine vorhandene Instanz von T aufgefüllt, mit der der Wert einer Eigenschaft für seine ID (aber fehlende andere Eigenschaften) warum können wir nicht suchen, durch die Bereitstellung dieser Objekt-Instanz, um die Suche in List
, vor allem, wenn wir umgesetzt haben, benutzerdefinierte IEquatable<T>
für T
und möchte das nutzen, was da ist. Aber so wie es ist, wir können nicht, wir wiederholen alles, was wir getan haben in IEquatable
Umsetzung in unserem Find(predicate)
nennen.
Was ist die Verwendung einer
Ich kann mir vorstellen, weil er versucht, um einen Verweis auf das Objekt in der Liste... nur weil er ein Objekt hat, dass "gleich" die anderen, vor allem wenn man bedenkt, dass er IEquatable implementiert und es ist nicht nur ein Referenz-Vergleich, das bedeutet nicht, dass er eine Referenz auf das Objekt, das er will.
genau wie antisanity bringt es
Find(T)
Methode, wenn Sie bereits haben, die Instanz? Das wäre äquivalent zu der Contains(T)
Methode, weil die einzige Sache, die Find(T)
wird Ihnen sagen, ist, ob diese Liste enthält die Instanz.Ich kann mir vorstellen, weil er versucht, um einen Verweis auf das Objekt in der Liste... nur weil er ein Objekt hat, dass "gleich" die anderen, vor allem wenn man bedenkt, dass er IEquatable implementiert und es ist nicht nur ein Referenz-Vergleich, das bedeutet nicht, dass er eine Referenz auf das Objekt, das er will.
genau wie antisanity bringt es
InformationsquelleAutor mare | 2011-08-15
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie rufen Sie die
IEquatable<T>
Mitglied(s) in IhremPredicate<T>
. Dann werden Sie nicht wiederholen.danke, wusste nicht, das getan werden kann.
InformationsquelleAutor Joel B Fant
wie über diese
InformationsquelleAutor Dean Chalk
EDIT:
Ich glaube, ich verstehe nun deine Frage. Sie können die
List<T>.IndexOf
Methode für diesen Zweck:Aber das wäre ziemlich komisch, weil klar, Gleichheit definition ist nicht ganz das ganze Bild - es ist ein bisschen ein Missbrauch der Gleichheit, IMO.
Ja, das ist richtig.
Mein Gleichheit definition ist gut, es sagt nur, dass zwei Eigenschaften definieren, die der Gleichberechtigung nicht nur eine.
InformationsquelleAutor Ani