lambda表达式

lambda表达式

Lambda表达式的本质是一个匿名函数,Lambda表达式只能与委托配合使用,其优势在可以很方便的定义匿名方法。所有Lambda表达式都使用Lambda运算符=>,该运算符读作"goes to"。Lambda运算符的左边是输入参数(如果有),右边是表达式或语句块。


lambda表达式语句

1、表达式lambda语法

如果只有一个输入参数时,括号可以省略,如:(x) => x * x 等于 x => x * x

如果具有一个以上的输入参数,必需加上括号,如:(x, y) => x== y

可以显式指定输入参数的类型,如:(int x, strings) => s.Length > x

也可以没有任何输入参数,如:() => Console.WriteLine("无参数的Lambda表达式")

2、函数语法

语句写在大括号中,如:

Action<int, int> sum = (a, b) => { inti = a = +b; Console.Write(i); };

只有一条语句时,可以省略大括号“{}”,如:

Action<int, int> sum = (a, b) => Console.Write(a+ b);

当匿名方法有返回值时,可以使用return,如:

Func<int, int, string> sum0= (a, b) => { return "和是:" + (a + b); };

当匿名方法有返回值,且只有一条语句时,可以省略大括号“{}”和return,如:

Func<int, int, string> sum1= (a, b) => "和是:" + (a + b);

注意:当有返回值时,语句Lambda中使用了大括号就一定要使用return关键字返回;反之使用了return关键字返回结果就一定要使用大括号。即:return关键字与大括号必须同时省略!

3、lambda式中的变量和作用域

在Lambda式定义中可以引用外部变量。只要是在定义处能够访问到的变量,都可以在Lambda式中引用。所有会被引用的外部变量必须在Lambda式定义之前被显式赋值。

变量作用域的规则:

被“捕获”的变量在委托的生命周期结束前都不会被垃圾回收;

在Lambda式内部定义的变量对外不可见;

Lambda式无法直接捕获一个具有ref或out描述的参数变量;

Lambda式中的return语句不会导致当前所在的方法返回;

Lambda式中不允许包含会导致跳当前执行范围的goto,break 或 continue语句。





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值