C# Action<T;和 Func<T;委托
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# Action<T;和 Func<T;委托相关的知识,希望对你有一定的参考价值。
除了为每个参数和返回类型定义一个新委托类型之外,还可以使用 Action<T> 和 Func<T>委托。泛型 Action<T>委托表示引用一个 void 返回类型的方法。这个委托类存在不同的变体,可以传递至多 16 种不同的参数类型。没有泛型参数的 Action 类可调用没有参数的方法。Action<in T>调用带一个参数的方法,Action<in T1,in T2>调用带两个参数的方法,Action<in T1,in T2,in T3,in T4,in T5,in T6,in T7,in T8>调用带 8 个参数的方法。
Func<T>委托可以以类似的方式使用。Func<T>允许调用带返回类型的方法。与Action<t>类似,Func<T>也定义了不同的变体,至多也可以传递 16 个参数类型和一个返回类型。Func<out TResult>委托类型可以调用带返回类型且无参数的方法,Func<in T,out TResult>调用带一个参数的方法,Func<in T1,in T2,in T3,in T4,out TResult>调用带 4 个参数的方法。
声明一个委托参数是 double 类型,返回类型是 double:
delegate double DoubleOp(double x);
除了声明自定义委托 DoubleOp 之外,还可以使用 Func<in T,out TResult>委托。可以声明一个该委托类型的变量,或者声明该委托类型的数组,如下所示:
Func<double,double>[] operations=
MathOperations.MultiplyByTwo,
MathOperations.Square
;
使用该委托,并将 ProcessAndDisplayNumber()方法作为参数:
static void ProcessAndDisplayNumber(Func<double, double>action,
double value)
double result = action(value);
Console.WriteLine($"Value is value, result of operation is result");
往期推荐
Love life,love yourself
关注小编不迷路呦~
以上是关于C# Action<T;和 Func<T;委托的主要内容,如果未能解决你的问题,请参考以下文章