尽管从事 .Net 开发有较长一段时间了,但对一些基础知识把握得不是很好,近期换了工作了,看到代码中的一些 Action 和 Func<> 的用法,于是来补一下根底。
首先说一下几个规定,就能很好了解了:
- Lambda 运算符,
=>
读做 “goes to” =>
左侧为参数,右侧为表达式或语句块,如(a,b) => a+b
,示意a
,b
为入参,返回值为a+b
=>
左边有{}
时,为语句块,无{}
时,为表达式- 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