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行代码.而定义行为最重要的那行代码,却混在中间不够突出 ...
随机推荐
- LA 5031 Graph and Queries —— Treap名次树
离线做法,逆序执行操作,那么原本的删除边的操作变为加入边的操作,用名次树维护每一个连通分量的名次,加边操作即是连通分量合并操作,每次将结点数小的子树向结点数大的子树合并,那么单次合并复杂度O(n1lo ...
- H3C 显示OSPF邻居信息
- html设置<input type="text">内的内容自动为大写
添加css样式:text-transform:uppercase;可以实现自动转换为大写样式. 但是input 的value还是小写的,因为它是CSS样式. <input type=" ...
- UVA 437 "The Tower of Babylon" (DAG上的动态规划)
传送门 题意 有 n 种立方体,每种都有无穷多个. 要求选一些立方体摞成一根尽量高的柱子(在摞的时候可以自行选择哪一条边作为高): 立方体 a 可以放在立方体 b 上方的前提条件是立方体 a 的底面长 ...
- Dbvisualizer各种中文乱码问题解决方法
1.SQL Commander里中文显示成‘口’ 解:进入Tools -> Tool Properties -> General -> Appearence -> Fonts, ...
- 关于axios的一些封装
关于Axios的封装 为何需要在封装 应用场景,项目中涉及100个AJAX请求,其中: 1.其中60个需要在请求头header设置token headers: {token: token}用于权限校验 ...
- 阿里云“网红"运维工程师白金:做一个平凡的圆梦人
他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名“辟拾(P10)”:他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路:他爱好清奇,练就了能在 20 秒 ...
- Hyperledger Fabric动态配置Raft节点
Hyperledger Fabric动态配置Raft节点 最近看官方文档发现新的共识算法etcdRaft允许动态添加或删除排序节点,所以也花了一天时间操作了以下,写篇文章把整个过程记录一下. 初始网络 ...
- 【题解】有标号的DAG计数2
[HZOI 2015] 有标号的DAG计数 II \(I\)中DP只有一个数组, \[ dp_i=\sum{i\choose j}2^{j(i-j)}dp_{i-j}(-1)^{j+1} \] 不会. ...
- 洛谷$P3756\ [CQOI2017]$老$C$的方块 网络流
正解:网络流 解题报告: 传送门$QwQ$ 看到不能出现给定的讨厌的图形,简单来说就,特殊边两侧的方格不能同时再连方格. 所以如果出现,就相当于是四种方案?就分别炸四个格子. 然后冷静分析一波之后发现 ...