Func 和 Action 委托

Posted xiaoruliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Func 和 Action 委托相关的知识,希望对你有一定的参考价值。

有了泛型委托,就有了一能适用于任何返回类型和任意参数(类型和合理的个数)的通用委托,Func 和 Action。如下所示(下面的in表示参数,out表示返回结果):

delegate TResult Func <out TResult> ();
delegate TResult Func <in T, out TResult> (T arg);
delegate TResult Func <in T1, in T2, out TResult> (T1 arg1, T2 arg2); //一直到 T16 delegate void Action ();
delegate void Action <in T> (T arg);
delegate void Action <in T1, in T2> (T1 arg1, T2 arg2); //一直到 T16

有了这样的通用委托,我们上面的Calculator泛型委托就可以删掉了,示例就可以更简洁了:

public static void Calculate<T>(T[] values, Func<T,T> c) {
    for (int i = 0; i < values.Length; i++)
        values[i] = c(values[i]);
}

Func 和 Action 委托,除了ref参数和out参数,基本上能适用于任何泛型委托的场景,非常好用。

以上是关于Func 和 Action 委托的主要内容,如果未能解决你的问题,请参考以下文章

委托之Action和Func区别

Func 和 Action 委托

系统自带的委托Action和Func

C# Action<T;和 Func<T;委托

在一行中声明和定义一个委托(不使用 Action/Func)

Action 和 Func