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数据库基础
    MSYQL操数据DML
    MYSQL外键约束
    MYSQL多表查询
    MYSQL结果排序、分页查询、聚合函数
    未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项”的解决方法
    由于扩展配置问题而无法提供您请求的页面。
    JS中的prototype(转载)
    mvc表单如何绑定bool类型的属性或变量
    使用c#正则验证关键字并找出匹配项
  • 原文地址:https://www.cnblogs.com/ericli-ericli/p/7494826.html
Copyright © 2011-2022 走看看