ist es möglich, einige Argumente in Lambda-Ausdrücken zu verwerfen, indem Sie ihnen keinen Namen geben? Zum Beispiel Ich habe eine Aktion < int passieren, int >, aber ich bin daran interessiert sind nur in der zweiten param, ich möchte so etwas wieC# lambda unbenannte Parameter
(_, foo) => bar(foo)
// or
(, foo) => bar(foo)
Im ersten Fall schreiben es funktioniert. Aber der erste Parameter ist nicht wirklich ungenannt, weil er den Namen "_" hat. Es funktioniert also nicht, wenn ich zwei oder mehr verwerfen möchte. Ich wähle _, weil es im Prolog die Bedeutung "beliebiger Wert" hat.
So. Gibt es einen speziellen Charakter oder Ausdruck für meinen Anwendungsfall?
'_' * hat * eine besondere Bedeutung wie in C# 7. Nicht für Lambda-Expression-Parameternamen (soweit ich das beurteilen kann), aber definitiv für andere Dinge, wie Mustererkennung, Dekonstruktion, out-Variablen und sogar reguläre Zuweisungen. (Zum Beispiel können Sie '_ = 5;' verwenden, ohne '_' zu deklarieren.) Ich weiß, dass diese Antwort einige Jahre vor C# 7 geschrieben wurde, aber da die letzte Zeile falsch geworden ist, wäre es gut, diese zu bearbeiten Du hast Zeit. –
@JonSkeet Danke für's Bemerken, ich habe deine Kommentare in einer Bearbeitung hinzugefügt. Ich muss besser darin werden, die Zukunft vorherzusagen. –
Ich bin oft in der gleichen Position - in diesem Fall hatte ich nicht wirklich bemerkt, dass es eine alte Antwort für eine ganze Weile war ... die neue Antwort hatte die Frage auf die Titelseite gestellt. –