虽然从事 .Net 开发有较长一段时间了,但对一些基础知识掌握得不是很好,近期换了工作了,看到代码中的一些 Action 和 Func<> 的用法,于是来补一下基础。

首先说一下几个规则,就能很好理解了:

  1. Lambda 运算符,=> 读做 "goes to"
  2. => 左侧为参数,右侧为表达式或语句块,如 (a,b) => a+b,表示 a,b 为入参,返回值为 a+b
  3. => 右边有 {} 时,为语句块,无 {} 时,为表达式
  4. Action 无返回值,Func<> 有返回值;即 Action<in T1,in T2> 中,T1 和 T2 都为入参,而 Func<in T1,in T2,out T3> 中,T1 和 T2 为入参,T3 为返回值(最后一个为返回值)。

我们举个例子吧

表达式
// return min value
Func<int,int,int> Min = (a,b) => a < b ? a : b;
int x = Min(1,2);
Console.WriteLine(x);
// 1
语句块
Func<int,int,int> Min = 
(a,b) =>
{
    if (a < b)
        return a;
    return b;
};
int x = Min(1,2);
Console.WriteLine(x);
// 1

再举一个 Action 的例子吧

Action<int,int,int> Print = 
{
    Console.WriteLine($"{a}\t{b}\t{c}");
};
Print(1,2,3);
// 1    2    3

小黄本黄
4 声望3 粉丝