将函数1作为函数2的参数传递,它将函数1的结果作为对象检索

时间:2017-09-08 13:59:25

标签: c# function

我有两个函数,一个接收函数作为参数并尝试返回传递函数的返回结果,第二个函数返回对象,我后来投射。

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

它说行动没有返回类型,我想这样称呼它:

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

1 个答案:

答案 0 :(得分:4)

您需要更改Action Func<object>,因为Action封装了一个方法,但没有返回值。

另一件需要改进的事情是你可以将function1转换为泛型,这样你就不必处理施法

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

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

然后像这样使用它

string myString = function1(function2);