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;委托的主要内容,如果未能解决你的问题,请参考以下文章

浅谈C#中常见的委托<Func,Action,Predicate>(转)

Action 和 Func

[C#]Action<>和Func<>

[C#]Action<>和Func<>

委托 Action和Func

ActionAction<T>Func<T>Predicate<T>