一、Lamda概念
- Lambda 表达式(lambda expression)是一个匿名函数,
- Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction), 是一个匿名函数,即没有函数名的函数。
- Lambda表达式可以表示闭包,和传统数学上的意义有区别。
- Lamda表达式可以包含语句以及运算符等操作;
- 可用于创建委托或表达式目录树类型;
- 支持带有可绑定到委托或表达式树的输入参数的内联表达式;
二、作用
减少代码量
三、格式
(参数列表)=> 表达式或代码块
(object argOne, object argTwo) => {; /*Your statement goes here*/}
(input paramters) => expressoin
(input paramters) => {statement;}
左边参数可以有多个参数,一个参数或者无参数;
参数类型可以是隐式或者显示;
只有一个参数时,括号是可选地,否则是必须得;
(x,y)=>x*y
x=>x*77
x=>{return x * 77; }
(int x)=>x*77
(int x)=>{return x*77;}
()=>Console.WriteLine("127");
// 无参数,括号必须
四、两种类型
- 语句lambda
- 表达式lambda
1.规则
1.形参的参数类型省略;
2.只有个一参数,参数外面的括号省略;
3.只有一行代码,代码部分的{}省略,return 省略;
4.如果没有形参,=>前必须有(),() => { ... ;}
;
2. 委托 + 匿名函数 => lambda表达式
>等效于
匿名函数的委托,用lambda表达式表示:
示例二:
3.无形参,无返回值
的匿名函数委托类型的lambda表达式写法:
public delegate void delegater();
del d= () => Console.WriteLine(“123”);
4.有形参,无返回值
代码如下(示例):
public delegate void delegater(string msg);
del d = (s) => Console.WriteLine(s+“,饭已经做好了!”);
d+=(t) => Console.WriteLine(s+“下楼米西吧!”);
d(“白云”);