zoukankan      html  css  js  c++  java
  • Lambda 表达式浅谈- 01

    已经有一段时间没有发布博文了...

    今天就写一写lambda的一些简单的使用方法

    Lambda 在Msdn 上的描述:

    Lambda 表达式是一种可用于创建委托表达式目录树类型的匿名函数。 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。 Lambda 表达式对于编写 LINQ 查询表达式特别有用。

    若要创建 Lambda 表达式,需要在 Lambda 运算符 => 左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块。 例如,lambda 表达式 x => x * x 指定名为 x 的参数并返回 x 的平方值。

    其实Lambda中是使用委托,下面可以写一个Demo 来验证它是如何使用的

    下面是写的测试代码

            static D d;
            static D2 d2;
            static D3 d3;
            static void Main(string[] args)
            {
                int j = 0;
                //使用委托的方式
                d = () => { j = 10; return j > 3; };
                d2 = (x) => { return x == j; };
                d3 = (x) => { x += 1; };
                 
                //Lambda
                Func<bool> fd = () => { j = 10; return j > 3; };
                Func<int, bool> fd2 = (x) => { return x == j; };
                Action<int> fd3 = (x) => { x += 1; };
            } 
        }
    

      

    通过反编译之后的源码:

    从源码看得出Lambda表达式的实质上是以委托的形式传递的

    要注意的一点:

    • Action<T1, …, T16> 可以接收1个到16个参数的无返回值泛型委托
    • Func<T1, …, T16, Tout> 可以接收0到16个参数并且有返回值的泛型委托

    就写到这吧,或许讲述的不到位。如果有不妥,还请指正。谢谢支持。

  • 相关阅读:
    【从0安装】mysql
    Java面试题整理(待完善)
    Linux部署Java项目
    执行旧命令的几种方法
    SQL Server死锁报错分析
    枚举类中枚举值不存在.valueOf(enum) 抛异常处理
    InitializingBean的项目开发使用
    巧用枚举来干掉if-else,代码更优雅!
    使用Docker安装配置GitLab CE
    批量条件导出之---CSV
  • 原文地址:https://www.cnblogs.com/jhy55/p/4848991.html
Copyright © 2011-2022 走看看