帮你理解学习lambda式
概要
窗前明月光,疑是地上霜,举头望明月,低头思故乡。别误会这是开头诗与以下文章没任何关系。
今天我想给大家说道说道 C# lambda表达式,不废话,下面开始说道!
lambda
lambda是什么,它不是是什么,它只是一个语法糖,看着简单明了,写起来简单,对于开发人员可读性好,还有就是省劲儿!重点来了:lambda就是委托的实现方法的简单写法
切记,切记,只要记住这句话,所有lambda表达式都好理解!什么不理解,不理解啊很正常,咱们看的例子就一下明白了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
//声明委托delegateTest
delegate int delegateTest(int a);
static void Main(string[] args)
{
//实现委托delegateTest
delegateTest tset = new delegateTest(test);
//lambda实现方式与test方法一样
delegateTest tset1 = new delegateTest(t => t);
}
//实现委托delegateTest
public static int test(int t)
{
return t;
}
}
}
首先我们声明了一个委托定义返回值是int参数也是一个int类型,然后我们定义了test方法来实现delegateTest这个委托;这里我们用了两种方式一种是普通的声明方法方式就是test方法,另一种我们用了lambda方式就是 t=>t,这个表达式和test方法是一样的,注意了没有delegateTest这个委托这个lambda表达式就是非法的,为什么?因为lambda就是委托的实现方法,必须和委托保持一致
明白了上面的说的,咱们来仔细看看它的结构t=>t,很好理解,看图
明白了左面是参数,右面是方法体,是不是很简单!记住lambda必须有对应的委托,有的同学问了为什么有些方法我没有声明委托也能用呢,例如集合的扩张方法.where();.select()那是因为.net framework已经为我们声明了相应的委托
func
Func和Action
Func和Action就是.net framework自带的委托,我们只要查看它们的委托类型,就能写出相应的lambda表达式,Func和Action委托其实差不多,区别是Func有返回值,Action没有返回值,具体的可以去查看.netframework帮助文档,一看就明白!
结语
看了上面的讲解,相信你一定会理解lambda式,如果觉得好请给赞一个,请关注我哦!转载请注明出处
帮你理解学习lambda式的更多相关文章
- Reactive 理解 SpringBoot 响应式的核心-Reactor
Reactive 理解 SpringBoot 响应式的核心-Reactor bestcoding 2020-02-23 17:26:43 一.前言 关于 响应式 Reactive,前面的两篇文章谈了不 ...
- [转]深入理解学习GIT工作流
深入理解学习Git工作流 字数13437 阅读2761 评论3 喜欢70 个人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协作模式,直到有一天我看到了下面的文章,好多遗留在心 ...
- 学习响应式编程 Reactor (4) - reactor 转换类操作符(1)
Reactor 操作符 数据在响应式流中的处理,就像流过一条装配流水线.Reactor 既是传送带,又是一个个的装配工或机器人.原材料从源头(最初的 Publisher )流出,经过一个个的装配线中装 ...
- LinqPad工具:帮你快速学习Linq
LinqPad工具:帮你快速学习Linq 参考: http://www.cnblogs.com/li-peng/p/3441729.html ★:linqPad下载地址:http://www.linq ...
- html 之前学习响应式的笔记
响应式的设计,根据用户设备的不同,用户屏幕大小不同,提供不同的网页设计http://mediaqueri.es/PhoneGap 使用2,如何模拟手机设备chome 浏览器 在32以上设备检测用 de ...
- 辛巴达:帮电商打造ZARA式开放供应链体系 - 行业网站 - 亿邦动力网
辛巴达:帮电商打造ZARA式开放供应链体系 - 行业网站 - 亿邦动力网 辛巴达:帮电商打造ZARA式开放供应链体系
- selenium 学习之路开始了,一遍搬一遍理解学习,加油!!!
selenium 学习之路开始了,一遍搬一遍理解学习,加油!!!
- 【RS】CoupledCF: Learning Explicit and Implicit User-item Couplings in Recommendation for Deep Collaborative Filtering-CoupledCF:在推荐系统深度协作过滤中学习显式和隐式的用户物品耦合
[论文标题]CoupledCF: Learning Explicit and Implicit User-item Couplings in Recommendation for Deep Colla ...
- 【转帖】linux内存管理原理深入理解段式页式
linux内存管理原理深入理解段式页式 https://blog.csdn.net/h674174380/article/details/75453750 其实一直没弄明白 linux 到底是 段页式 ...
随机推荐
- ubuntu16.04 Detectron目标检测库配置(包含GPU驱动,Cuda,Caffee2等配置梳理)
Detectron概述 Detectron是Facebook FAIR开源了的一个目标检测(Object Detection)平台. 用一幅图简单说明下Object Detection.如Mask R ...
- 8、Spring Cloud-配置中心 Spring Cloud Config(待补充)
8.1.Config Server 本地读取配置文件 Config Server 可以从本地仓库读取配置文件,也可以从远处 Git 仓库读取. 本地仓库是指将所有的配置文件统 写在 Config ...
- CentOS 安装jira 6.3.6
java 目录: /usr/java/jdk1.6.0_45 tomcat 目录:/usr/tomcat-7.0.29 jira 目录: /usr/local/jira jira 访问地址: cent ...
- 用c写一个小的聊天室程序
1.聊天室程序——客户端 客户端我也用了select进行I/O复用,同时监控是否有来自socket的消息和标准输入,近似可以完成对键盘的中断使用. 其中select的监控里,STDOUT和STDIN是 ...
- BigDecimal.setScale用法总结
1. BigDecimal num1 = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失 2. BigDecimal num2 = new BigDecimal( ...
- Java SPI(Service Provider Interface)
SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制. 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个 ...
- [LuoguP2403][SDOI2010]所驼门王的宝藏
题目描述 在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族.被族人恭称为"先知"的Alpaca L. Sotomon是这个家族的领袖,外人也称其为"所驼门王". ...
- ORA-28002 密码过期解决方案
ORA-28002 密码过期解决方案 错误场景:当使用sqlplus进行登录时报错:ORA-28002 密码过期.错误原因:由于oracle 11g 在默认在default概要文件中设置了密码过期天数 ...
- vue-cli 项目安装失败 tunneling socket could not be established, cause=connect ECONNREFUSED
1.安装vue-cli npm install vue-cli -g 2.初始化项目 vue init webpack project 此时报错:vue-cli · Failed to downloa ...
- appache 端口 更改
外网访问---->hosts文件映射服务名(127.0.0.1 xiaotian.cn)-->appache中httpd文件监听相关端口号(*:8080)--->appache中的v ...