zoukankan      html  css  js  c++  java
  • Lambda 表达式

    先看代码:

    View Code
     1 class Program
    2 {
    3 static void Main()
    4 {
    5 Func<int, bool> func1 = new Func<int, bool>(isPositive);
    6
    7 Func<int, bool> func2 = isPositive;
    8
    9 int b = 5;
    10 Func<int, bool> func3 = delegate(int a)
    11 {
    12 return a + b > 0;
    13 };
    14
    15 Func<int, bool> func4 = a =>
    16 {
    17 return a + b > 0;
    18 };
    19 }
    20
    21 static bool isPositive(int a)
    22 {
    23 return a > 0;
    24 }
    25 }

    从上面的代码,我们可以看出委托的进化过程:

    1、第5行:原始的写法,Named Delegate,使用delegate 包装方法。

    2、第7行:对原始的写法进行简化,不需要使用delegate包装方法。

    3、第10行:Anonymous Method Delegate,直接使用匿名方法。

    4、第15行:使用Lambda 表达式简化匿名方法。


    总结:

    1、 第7行只是对第5行进行了简化,没有很大的意义。

    2、从Named Delegate 到 Anonymous Method Delegate 有了很大的进步,因为Anonymous Method 引入了闭包的概念,简单说就是匿名方法可以使用上下文的数据。Anonymous Method的实现原理是,C# Compiler 在IL中生成一个Named Dalegate 和 它指向的方法。

    3、Lambda 表达式只是对匿名方法进行了简化。

  • 相关阅读:
    Numpy基础学习笔记3
    Numpy基础学习笔记2
    Halcon学习笔记——机器视觉应用工程开发思路及相机标定
    WPF的依赖项属性
    如何理解委托与事件
    LINQ和.NET数据访问
    PLC通信网络
    运动控制基础
    PLC总结
    C#使用第三方组件Epplus操作Excel表
  • 原文地址:https://www.cnblogs.com/nzbbody/p/2321301.html
Copyright © 2011-2022 走看看