Wie deklarieren Sie einen Predicate Delegate inline?
Ich bin mit C#.
Also ich habe ein Objekt, das hat einige Felder, egal, was.
Ich habe eine generische Liste dieser Objekte.
List<MyObject> myObjects = new List<MyObject>();
myObjects.Add(myObject1);
myObjects.Add(myObject2);
myObjects.Add(myObject3);
So, ich möchte das entfernen von Objekten aus meiner Liste basierend auf bestimmten Kriterien.
Zum Beispiel myObject.X >= 10.
Ich möchte die RemoveAll(Predicate<T> match)
Methode, dies zu tun.
Ich weiß, ich kann definieren einer Delegierten, die übergeben werden können, in RemoveAll, aber ich würde gerne wissen, wie die Definition dieses inline mit einem anonymen delegate, anstatt eine Reihe von delegate-Funktionen, die nur in einmal Platz.
InformationsquelleAutor der Frage Curtis | 2008-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Möglichkeiten, eine explizite Delegierten oder eines Delegierten, getarnt als lamba-Konstrukt:
explizite delegieren
lambda
Zusatz:
Leistung Weise beide gleich sind. Als eine Angelegenheit von der Tat, beide Konstrukte generieren, die gleiche IL wenn er kompiliert wird. Dies ist denn C# 3.0 ist im Grunde eine Erweiterung auf C# 2.0, damit es kompiliert zu C# 2.0-Konstrukte 🙂
InformationsquelleAutor der Antwort Erik van Brakel
Lambda-C# 3.0-Weise:
Anonymen Delegaten C# 2.0 Weg:
Ist, und für den VB-Jungs, die VB 9.0 lambda-Weg:
Leider, VB unterstützt keine anonymen Delegaten.
InformationsquelleAutor der Antwort Mark Brackett
oder
oder
InformationsquelleAutor der Antwort Mark Cidade
Prädikat ist ein Delegat, das nimmt einen Parameter und gibt einen booleschen Wert zurück.
Wir können das gleiche tun, in der folgenden Weise
1) die Verwendung von inline-Lambda-Ausdruck
2) Mit anonymen Funktion
3) Mit Prädikats-Delegaten
3) Deklarieren Sie einen Delegaten Fällen und zeigt auf eine Funktion
//Eigentliche Funktion
InformationsquelleAutor der Antwort Nayas Subramanian