Bind-Funktion (Delegierter) Argumente
Ich versuche, das folgende zu erzielen, ohne mit einer lambda-Funktion:
Func<bool> test = () => RunSomething("test"); <-- This work fine but creates lambda
Func<bool> test = bind(RunSomething, "test"); <-- Bind "test" to RunSomething
In anderen Worten, ich möchte wissen, ob es möglich ist irgendwie mit der bind-Funktion und Argumente.
Es ist möglich in C++ mit std::bind, aber ist es möglich in C# ?
- Was ist falsch w/ lambdas?
- nichts, aber mir fehlt es an boost::bind aka std::bind aus C++ auch. Es ist einfach ein "use case" (imho).
- boost.org/doc/libs/1_62_0/libs/bind/doc/html/bind.html
- ein weiterer Gedanke auf: mit binden, binden Sie den Wert, mit lambda, die Sie zuweisen die variable, wenn der Wert der Variablen ändert, die in dem äußeren Umfang, wird es auch zu Veränderungen in der (lambda) inneren Umfang, so ist es ein riesiger Unterschied
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, es ist einfach zu bauen so eine Methode, aber das würde die Verwendung eines lambda-Ausdrucks für die Umsetzung:
Und ebenso einige überladungen für Funktionen mit mehr Argumenten:
Halten, so weit zu gehen, wie Sie wollen - vielleicht sogar das hinzufügen von Methoden zu binden, mehr als ein argument in einem Aufruf.
Du kann all das tun, ohne einen lambda-Ausdruck, aber es würde nur mehr Arbeit. Zum Beispiel:
Ist im Grunde, was der compiler tun würde, für Sie automatisch mit einem lambda-Ausdruck, also warum selber machen?
Type.InvokeMember
obwohl - es ist eine andere Art von "binden", wirklich, ist, dass es dem aufrufen der Methode sofort, eher als partielle Funktion Anwendung.Stieß ich auf diese Anforderung, und am Ende, soeben die info, die ich wollte zu binden, die an den Konstruktor. Offensichtlich, dies würde nicht funktionieren, wenn Sie nicht haben Zugriff auf die Bindung von Daten, mit denen das Objekt konstruiert wird.