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 表达式只是对匿名方法进行了简化。

  • 相关阅读:
    本周总结
    本周总结
    本周总结
    本周总结
    性能分析(4)
    大型网站高性能架构
    第二天大数据清洗
    性能分析(2)
    六大质量属性——性能分析(1)
    java设计模式9-代理模式
  • 原文地址:https://www.cnblogs.com/nzbbody/p/2321301.html
Copyright © 2011-2022 走看看