zoukankan      html  css  js  c++  java
  • 个人理解的Lambda表达式的演化过程

    之前在组内进行过相关分享,为防止以后再单独整理,故在此将自己的PPT内容存放下。

    所以,多数代码都是以图片的方式展现。

    委托

    什么是委托?

    定义:委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。

     (1) 从数据结构来讲,委托是和类一样是一种用户自定义类型。
     (2) 从设计模式来讲,委托(类)提供了方法(对象)的抽象。

    个人理解:将方法作为参数进行传递

    很多时候委托接收的方法是一次性的或者方法体是非常简单的...

    代码做减法

    定义委托,很多时候签名(参数与返回值类型)可能是一样的。这样就没有必要定义重复的

    匿名方法

     匿名方法的背后:

    Func和Action

     每次使用委托,重复定义太傻气了,
    微软在框架内一次定义好所有可能用到的委托。
    那千变万化的方法签名怎么可能定义全?没关系,定义成泛型就可以解决问题

    public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);
     参数个数重载了16个

    public delegate void Action();
    参数个数重载了16次

    Lambda

    “=>”读作“goes to”

    代码变成最后一种写法的要求:
       1.只能有一个传入参数
       2.方法体只能只一条语句。

    关于第1点,lambda我们平时用得较多的是基于IEnumerable或IQueryable,
    所以只能有一个参数也就满足了。

    关于第2点,我们使用扩展方法的链式编程来解决,例:

    总结"进化"过程

  • 相关阅读:
    mysql 启动不了,报错InnoDB相关
    vue 根据屏幕大小重新加载 echarts
    echarts 图例样式
    canvas 创建的图表,在移动端时,手指触碰,无法上下滑动页面
    uni-app 左上角返回按钮消失
    uni-app 缓存无法读取问题
    hbuider 运行 uni-app PC使用安卓模拟器接口请求错误
    wbstrom 使用git提交代码
    后端路由正常,但页面空白
    算法——RSA算法原理(转)
  • 原文地址:https://www.cnblogs.com/ericli-ericli/p/7494826.html
Copyright © 2011-2022 走看看