概要

    窗前明月光,疑是地上霜,举头望明月,低头思故乡。别误会这是开头诗与以下文章没任何关系。

今天我想给大家说道说道 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式的更多相关文章

  1. Reactive 理解 SpringBoot 响应式的核心-Reactor

    Reactive 理解 SpringBoot 响应式的核心-Reactor bestcoding 2020-02-23 17:26:43 一.前言 关于 响应式 Reactive,前面的两篇文章谈了不 ...

  2. [转]深入理解学习GIT工作流

    深入理解学习Git工作流 字数13437 阅读2761 评论3 喜欢70 个人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协作模式,直到有一天我看到了下面的文章,好多遗留在心 ...

  3. 学习响应式编程 Reactor (4) - reactor 转换类操作符(1)

    Reactor 操作符 数据在响应式流中的处理,就像流过一条装配流水线.Reactor 既是传送带,又是一个个的装配工或机器人.原材料从源头(最初的 Publisher )流出,经过一个个的装配线中装 ...

  4. LinqPad工具:帮你快速学习Linq

    LinqPad工具:帮你快速学习Linq 参考: http://www.cnblogs.com/li-peng/p/3441729.html ★:linqPad下载地址:http://www.linq ...

  5. html 之前学习响应式的笔记

    响应式的设计,根据用户设备的不同,用户屏幕大小不同,提供不同的网页设计http://mediaqueri.es/PhoneGap 使用2,如何模拟手机设备chome 浏览器 在32以上设备检测用 de ...

  6. 辛巴达:帮电商打造ZARA式开放供应链体系 - 行业网站 - 亿邦动力网

    辛巴达:帮电商打造ZARA式开放供应链体系 - 行业网站 - 亿邦动力网 辛巴达:帮电商打造ZARA式开放供应链体系

  7. selenium 学习之路开始了,一遍搬一遍理解学习,加油!!!

    selenium 学习之路开始了,一遍搬一遍理解学习,加油!!!

  8. 【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 ...

  9. 【转帖】linux内存管理原理深入理解段式页式

    linux内存管理原理深入理解段式页式 https://blog.csdn.net/h674174380/article/details/75453750 其实一直没弄明白 linux 到底是 段页式 ...

随机推荐

  1. Python 多线程 使用线程 (二)

    Python中实现多线程需要使用到 threading 库,其中每一个 Thread类 的实例控制一个线程. Thread类 #类签名 def __init__(self, group=None, t ...

  2. 全球参考系统(WRS)概述及常用工具汇总

    1.全球参考系统(WRS)简介 WRS(Worldwide Reference System)是Landsat卫星采用的全球参考系统,也是国际上非常具有代表意义的全球参考系统之一.WRS是依据卫星地面 ...

  3. 维度属性的KeyColumns如果是Integer类型,那么维度表中该列的值不能有为null的

    如果维度属性的 KeyColumns的DataType设置为了Integer类型,那么要注意该维度属性列在数据库中不能有为null的值. 例如下图中我们有维度DIM_Vehcile,其中有个维度属性叫 ...

  4. SpringMVC找不到对应的页面

    确认springmvc配置文件视图解析器配置正确. <!-- 视图解析器 --> <bean class="org.springframework.web.servlet. ...

  5. Linux安装部署

    Linux桌面发行版 UbuntuCentOSRed heat LinuxOracle Linux 一.系统安装 1.系统分区 若手动分区swap和根分区必须创建,推荐创建boot分区. /----- ...

  6. VS Code 的常用快捷键及插件(前端)

    一.vs code 的常用快捷键 1.注释: a) 单行注释:[ctrl+k,ctrl+c] 或 ctrl+/ b) 取消单行注释:[ctrl+k,ctrl+u] (按下ctrl不放,再按k + u) ...

  7. vue数组赋值

    在使用vue开发移动端项目过程中,统一数组在对多个变量赋值时:希望一个数组的改变不影响另外一个数组,此时可以使用如下方式实现: let arr = [] let a1 = JSON.parse(JSO ...

  8. ajax与jsonp定义及使用方法

    ajax 定义 ajax技术的目的是让javascript发送http请求,与后台通信,获取数据和信息. ajax通信的过程不会影响后续javascript的执行,从而实现异步. 同步和异步 现实生活 ...

  9. 【转】C#计算两坐标点距离

    //地球半径,单位米 ; /// <summary> /// 计算两点位置的距离,返回两点的距离,单位 米 /// 该公式为GOOGLE提供,误差小于0.2米 /// </summa ...

  10. iOS 12.0-12.1.2 越狱教程

    unc0ver V3.0.0~b29 越狱工具已经开始公测,支持搭载 A8X-A11 处理器的 iOS 12.0-12.1.2 设备完整越狱,Cydia 商店和 Substrate 插件可正常安装并运 ...