Lambda表达式(lambda expression)⭐⭐⭐⭐⭐
lambda表达式(lambda expression)实际上是匿名函数一种表示形式,
即没有函数名的函数:参数列表=>表达式或语句块,在我看来主要目是为了简化代码编写,提高代码可读性而提供的语法糖。
C#中lambda表达式使用“=>”运算符表示,可读作“goes to”,
多参数多语句时用“(x,y)=>{语句块};”参数和语句块分别需要用小括号和大括号括起,
单参数单语句则可以“x=>语句;”无括号;无参数则表示为()=>表达式.
lamdba的每一次简写就是每一次C# framwork的升级,出现"=>"是C# 升级到了3.0版本了。
delegate void delegateLambda();
delegate void delegateLambda2(int x);
delegate void delegateLambda3(int x, int y);
private void btnCalculate_Click(object sender, EventArgs e)
{
delegateLambda lam = () => MessageBox.Show("无参数lambda表达式");
lam();
delegateLambda2 lam2 = x =>
{
MessageBox.Show("单一参数lambda表达式x=:" + x.ToString());
};
lam2();
delegateLambda3 lam3 = (x, y) =>
{
string result = (x + y).ToString();
MessageBox.Show(result);
};
lam3(, );
}
也可通过lambda表达式实现委托:
无论传统匿名方法还是Lambda 表达式实现的委托,
原理都是在编译过程中,创建了一个静态的方法实例委托的对象。
也就是说匿名方法和Lambda 表达式在CIL中都是采用命名方法实例化委托。
public partial class MainDisplay : Form
{
public MainDisplay()
{
InitializeComponent();
} List<Student> studentList = new List<Student>();
private void MainDisplay_Load(object sender, EventArgs e)
{
Student s1 = new Student() { Name = "张三", Id = "", age = , ClassId = "", Sex = "男" };
Student s2 = new Student() { Name = "李四", Id = "", age = , ClassId = "", Sex = "男" };
Student s3 = new Student() { Name = "王五", Id = "", age = , ClassId = "", Sex = "男" };
Student s4 = new Student() { Name = "赵六", Id = "", age = , ClassId = "", Sex = "女" };
studentList.Add(s1);
studentList.Add(s2);
studentList.Add(s3);
studentList.Add(s4);
} private void btnSearch_Click(object sender, EventArgs e)
{
List<Student> student=new List<Student>();
//查询年龄大于30的学生
student = studentList.Where(Stu => Stu.age > ).ToList();
foreach (Student stu in student)
{
MessageBox.Show(stu.Name);
}
}
} public class Student
{
public string Id { get; set; } public string Name { get; set; } public string Sex { get; set; } public int age { get; set; } public string ClassId { get; set; }
}
Lambda表达式(lambda expression)⭐⭐⭐⭐⭐的更多相关文章
- 委托、匿名委托、Lambda 表达式、Expression表达式树之刨根问底
本篇不是对标题所述之概念的入门文章,重点在阐述它们的异同点和应用场景.各位看官,这里就不啰嗦了,直接上代码. 首先定义一个泛型委托类型,如下: public delegate T Function&l ...
- Lambda表达式 和 Expression<T>
经常用的Lambda表达式 返回的是 Expression<T> 格式 public class ActivityService { private readonly List<A ...
- C#中Lambda表达式类型Expression不接受lambda函数
在EF Core中我们经常会用System.Linq.Expressions系统命名空间的Expression<TDelegate>类型来作为EF Core的查询条件,比如: using ...
- JAVA 8 Lambda表达式-Lambda Expressions
Lambda表达式介绍 Lambda表达式是在java规范提案JSR 335中定义的,Java 8 中引入了Lambda表达式,并被认为是Java 8最大的新特性,Lambda表达式促进了函数式编程, ...
- Java基础进阶:内部类lambda重点摘要,详细讲解成员内部类,局部内部类,匿名内部类,Lambda表达式,Lambda表达式和匿名内部类的区别,附重难点,代码实现源码,课堂笔记,课后扩展及答案
内部类lambda重点摘要 内部类特点: 内部类可以直接访问外部类,包括私有 外部类访问内部类必须创建对象 创建内部对象格式: 外部类.内部类 对象名=new外部类().new内部类(); 静态内部类 ...
- 深入学习C#匿名函数、委托、Lambda表达式、表达式树类型——Expression tree types
匿名函数 匿名函数(Anonymous Function)是表示“内联”方法定义的表达式.匿名函数本身及其内部没有值或者类型,但是可以转换为兼容的委托或者表达式树类型(了解详情).匿名函数转换的计算取 ...
- SqlHelper简单实现(通过Expression和反射)5.Lambda表达式解析类
这个ExpressionHelper类,是整个SqlHelper中,最核心的一个类,主要功能就是将Lambda表达式转换为Sql语句.同时这个转换过程比较复杂,所以下面详细讲解一下思路和这个类的作用. ...
- Util应用程序框架公共操作类(七):Lambda表达式公共操作类
前一篇扩展了两个常用验证方法,本文将封装两个Lambda表达式操作,用来为下一篇的查询扩展服务. Lambda表达式是一种简洁的匿名函数语法,可以用它将方法作为委托参数传递.在Linq中,大量使用La ...
- lambda表达式
什么是Lambda表达式 lambda表达式,它将允许我们将行为传到函数里.在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码.而定义行为最重要的那行代码,却混在中间不够突出 ...
随机推荐
- 无限调用函数add(1)(2)(3)......
无限调用函数,并且累计结果 其实这也算一道面试题吧,笔者曾经被提问过,可惜当时没能答上来...
- 地址中如果含有"+",发给服务器时"+"变成了空格问题解析
如地址为sms:+7 915 444-414-444,含有空格. 服务器解码 URLDecoder.decode("sms:+7 915 444-414-444"),返回的是sms ...
- MySQL中Index Merge简介
索引合并优化 官网翻译 MySQL5.7文档 索引合并是为了减少几个范围(type中的range类型:range can be used when a key column is compared t ...
- java 使用反射调用可变参数方法
使用反射操作对象-调用可变参数方法 要把可变参数都当做是其对应的数组类型参数; 如 show(XX... is)作为show(XX[] is)调用; 若可变参数元素类型是引用类型: JDK内部接收到参 ...
- H3C 端口隔离简介
- 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架
20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...
- Linux 内核VLB 总线
另一个对 ISA 的扩展是 VESA Local Bus(VLB) 接口总线, 它扩展了 ISA 连接器, 通过 添加第 3 个知道长度的槽位. 一个设备可只插入这个额外的连接器(不用插入 2 个关联 ...
- C语言 屏幕截图 (GDI)
截取全屏幕 #include <windows.h> void echo(CHAR *str); int CaptureImage(HWND hWnd, CHAR *dirPath, ...
- jdk+tomcat+mysql一键安装脚本
最近在搞一个web项目部署,每次都要安装jdk.配置环境变量.安装tomcat和mysql.对于非开发人员,还是有点难度的,经常出错,然后就整理了一个自动化的脚本. JDKinstall.bat @e ...
- How to fix nuget Unrecognized license type MIT when pack
When I packaging license within the nupkg, I will using License to replace licentUrl. I using this c ...