乐趣区

关于c#:重温-C-Lambda-表达式

尽管从事 .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
退出移动版