Ich kann eine Nicht-Leerfunktion von einem Lambda nennen, die zu einer Aktion zugewiesen wird (die einen Rückgabetyp void erwartet):Sind lambdas, die dem void delegate zugewiesen sind, den nicht void Rückgabetyp in C# verwerfen?
static bool foo() { return true; }
...
// Action action = foo; // This gives a compile error though.
Action action =()=>foo(); // This compiles
Zunächst ich diese während bemerkte ein Beispiel für List.ForEach()
suchen. Ich könnte eine nicht-void-Funktion aus dem Lambda ausführen und es kompiliert.
Anfangs schien dies kontraintuitiv, und machte mich denken Sie nicht-Leere Funktionen auf einen void
delegieren (void wirkende wie eine Art kontra) zuordnen kann, aber Action action = foo;
funktionierte nicht.
Also jetzt nehme ich an, was passiert, ist, dass das Lambda ungültig wird, weil das der erwartete Rückgabetyp ist, so verwirft es den Rückgabetyp der non-void-Funktion, die es aufruft. Ist das korrekt?
Ja, das macht Sinn. Ich denke, es war nur die mathematisch-ähnliche Notation 'x => f (x)', die es auf den ersten Blick kontraproduktiv erscheinen lässt. Vielen Dank. – sashoalm