2017-09-08 1 views
0

abrufen Ich habe zwei Funktionen, eine erhält Funktion als Parameter und versucht, das Ergebnis der Rückgabe der übergebenen Funktion zurückzugeben, zweite nur Funktion, die Objekt zurückgibt, die Ich warte später.Funktion 1 als Argument an Funktion 2 übergeben, die Funktion 1 Ergebnis als Objekt

object function1(Action act) { 
    object result = act(); 
    // do something with result 
    return result; 
} 
object function2() { 
    return (object)"string as object"; 
} 

Und er sagt, dass Maßnahmen nicht Rückgabetyp hat, habe ich es auf diese Weise zu telefonieren möchten:

function1(() => function2); // so it'll return "string as object" as object. 

Antwort

4

Sie müssen Action von Func<object> seit Action ändern kapselt eine Methode, aber nicht einen Wert zurückgeben.

Eine andere Sache zu verbessern, ist, dass Sie in der Lage sein könnte function1 zu Generika konvertieren, so dass Sie mit dem Gießen nicht

T function1<T>(Func<T> act) 
{ 
    T result = act(); 
    // do something with result 
    return result; 
} 

string function2() 
{ 
    return "string as object"; 
} 

zu tun haben und es dann so

string myString = function1(function2); 
+0

Dank verwenden, das hat funktioniert! (Ich werde als Antwort akzeptieren, nachdem SO aufhören zu sagen, Sie können eine Antwort in 10 Minuten akzeptieren) – BladeMight

Verwandte Themen