高阶函数返回函数什么都不返回

时间:2010-10-20 19:55:13

标签: c#

在C#中如何定义哪些返回函数什么都不返回的函数?像这样:

class X
{
    public Func<void> GetFuncReturningVoid() { ... }
}

2 个答案:

答案 0 :(得分:8)

返回任何内容的函数是Action。使用lambda表达式,你可以这样写:

Action GetFuncReturningVoid() {
    return () => Console.Writeline("my action");
}

如果你需要接受论点......

Action<int, int> GetActionWithArguments() {
    return (int x, int y) => Console.Writeline(x * y);
}

或者您可以让编译器推断出类型:

Action<int, int> GetActionWithArguments() {
    return (x, y) => Console.Writeline(x * y);
}

答案 1 :(得分:1)

一般来说,Action是“行动”:他们做某事,但什么也不做。 Func是数学意义上的“函数”:它们将一个值转换为另一个值。

所以你想要ActionAction<T>(对于T类型的一个参数)或Action<T, U>等等。