尽管从事 .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 valueFunc<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