最全【Lambda表达式】Lambda表达的解剖学,rabbitmq面试题

总结

虽然面试套路众多,但对于技术面试来说,主要还是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。

上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料

有些面试官喜欢问自己擅长的问题,比如在实际编程中遇到的或者他自己一直在琢磨的这方面的问题,还有些面试官,尤其是大厂的比如 BAT 的面试官喜欢问面试者认为自己擅长的,然后通过提问的方式深挖细节,刨根到底。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

(1)具有多个参数的Lambda表达式:

如果您需要传递多个参数,可以将参数放在括号中,如下所示:

示例:在lambda表达式中指定多个参数C#

(s, youngAge) => s.Age >= youngage;

在lambda表达式中指定参数类型C#

(Student s,int youngAge) => s.Age >= youngage;

(2)没有任何参数的Lambd表达式:

在lambda表达式中不需要至少一个参数。lambda表达式可以在没有任何参数的情况下被指定。

带零参数的Lambda表达式。

() => Console.WriteLine(“Parameter less lambda expression”)

(3)正文表达中的多个语句:

如果要在正文中使用多个语句,则可以使用大括号包装表达式:

(s, youngAge) =>

{

Console.WriteLine(“Lambda expression with multiple statements in the body”);

Return s.Age >= youngAge;

}

(4)Lambda表达式主体中的局部变量:

您可以在表达式主体中声明一个变量,以在表达式主体中的任何位置使用它,如下所示:

s =>

{

int youngAge = 18;

Console.WriteLine(“Lambda expression with multiple statements in the body”);

return s.Age >= youngAge;

}

(5)功能代表:

当你想从lambda表达式返回某些东西的时候,使用Func <>委托。Func <>委托中的最后一个参数类型是返回类型,rest是输入参数。

考虑下面的lambda表达式来找出一个学生是否是一个十几岁的孩子。

分配给C#中的Func委托的Lambda表达式

Func<Student, bool> isStudentTeenAger = s => s.age > 12 && s.age < 20;

Student std = new Student() { age = 21 };

bool isTeen = isStudentTeenAger(std);// returns false

在上面的例子中,Func委托期望第一个输入参数是Student类型,返回类型是boolean。lambda表达式 s => s.age > 12 && s.age < 20满足Func <Student,bool>委托要求,如下所示:

上面显示的Func <>委托会变成如下所示的函数。

bool isStudentTeenAger(Student s)

{

return s.Age > 12 && s.Age < 20;

}

(6)行动代表:

与Func委托不同,一个Action委托只能有输入参数。当您不需要从lambda表达式返回任何值时,使用Action委托类型。

分配给C#中的Action委托的Lamda表达式

Action PrintStudentDetail = s => Console.WriteLine("Name: {0}, Age: {1} ", s.StudentName, s.Age);

Student std = new Student(){ StudentName = “Bill”, Age=21};

PrintStudentDetail(std);//output: Name: Bill, Age: 21

(7)LINQ查询中的Lambda表达式:

通常,lambda表达式与LINQ查询一起使用。枚举静态类包括其中扩展方法IEnumerable接受Func<TSource,bool>。所以IEnumerable需要通过Where()扩展方法来传递Func<Student,bool>,如下所示:

所以,现在,您可以将分配给Func委托的lambda表达式传递给方法语法中的Where()扩展方法,如下所示:

LINQ方法语法中的Func委托

IList studentList = new List(){…};

Func<Student, bool> isStudentTeenAger = s => s.age > 12 && s.age < 20;

var teenStudents = studentList.Where(isStudentTeenAger).ToList();

例如:LINQ查询语法中的Func委托

IList studentList = new List(){…};

Func<Student, bool> isStudentTeenAger = s => s.age > 12 && s.age < 20;

var teenStudents = from s in studentList

where isStudentTeenAger(s)

select s;

Linq VS Lambda


Linq表达式、Lambda表达式你更喜欢哪个?

实际项目中的应用


最后

分布式技术专题+面试解析+相关的手写和学习的笔记pdf

还有更多Java笔记分享如下:

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

Java笔记分享如下:

[外链图片转存中…(img-okr352Ud-1715588381685)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值