Lambda 表达式

1、一个匿名函数,一段可以像数据一样传递的代码

2、语法格式

(1)(parameters) -> expression;

(2)(parameters) -> {statements;}

3、Lambda 操作符 / 箭头操作符:->

(1)左方:Lambda 形参列表:抽象方法的形参

(2)右方:Lambda 体:重写抽象方法的方法体

4、可选项

(1)类型声明,形参列表的参数不需要声明类型,编译器可以统一识别

(2)():若形参列表只有一个参数,() 可以省略;没有参数 / 有多个参数,() 不可以省略

(3){}:Lambda 体只有一条语句,{} 可以省略;多条语句,{} 不可省略

(4)return:Lambda 体没有 {},return 可以省略;有{},return 不可省略,即 return 跟随 {}

5、使用前提

(1)基于接口的匿名内部类

(2)接口有且只有一个抽象方法,即函数式接口

6、lambda 表达式可以捕获外围作用域中变量的值

(1)在 lambda 表达式中,只能引用值不会改变的变量

(2)如果在 lambda 表达式中更改变量,并发执行多个动作时就会不安全

(3)如果在 lambda 表达式中引用一个变量,而这个变量可能在外部改变,这是不合法的

(4)lambda 表达式中捕获的变量必须实际上是事实最终变量

(5)事实最终变量是指,这个变量初始化之后就不会再为它赋新值

7、lambda 表达式的体与嵌套块有相同的作用域

(1)同样适用命名冲突和遮蔽的有关规则

(2)在 lambda 表达式中声明与一个局部变量同名的参数或局部变量是不合法的

(3)在一个 lambda 表达式中使用 this 关键字时,是指创建这个 lambda 表达式的方法的 this 参数

posted @   半条咸鱼  阅读(35)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示