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

    Lambda表达式是一种匿名函数。
     
    演变步骤:
     
    一般的方法委托 => 匿名函数委托 => Lambda表达式
     

    Lambda表达式其实并不陌生,他的前生就是匿名函数,所以要谈Lambda表达式,就不得不谈匿名函数,要谈匿名函数,那又要不得不谈委托。


     
    委托非常好理解,类似于C++里面的函数指针(指向了一个方法),并且委托约束了待指向方法的签名(由返回类型和参数组成)。
     
    首先,定义一个委托如 :
     
    delegate int ProcessInt(int i);
     
    定义了委托可以像变量一样传递方法。如:
     
     void Sample(ProcessInt pro)
    这时我们需要写与委托签名一样的方法:
     
             int Double(int i)
             {
                 return i * 2;
             }
     
             int Divide(int i)
             {
                 return Convert.ToInt32(i / 2);
             }
     
    对一个很简单的操作,来说,这样重复定义方法很麻烦,不够优雅,.net 2.0 出现了匿名方法,像这样:
     
    Sample(delegate(int i) { return i * 2; });  //匿名方法 
     
     
    现在好了,要调什么方法,我不用再定义方法了,但是写程序还是要敲很多字符,好,Lambda表达式来了。它是这样写的:
     
    Sample(i => i * 2);   //Lambda表达式
     
    或者说,这样
     
    Sample2((i, k) => i * k);
     

    代码:

    执行Test就可以验证结果。  

    delegate int ProcessInt(int i);
             delegate int Add(int i, int k);
             int Double(int i)
             {
                 return i * 2;
             }
    
             int Divide(int i)
             {
                 return Convert.ToInt32(i / 2);
             }
    
             void Sample(ProcessInt pro)
             {
                 int i = 30;
                 Console.WriteLine(pro(i));
    
             }
    
    
             void Sample2(Add pro)
             {
                 int i = 30;
                 int k = 5;
                 Console.WriteLine(pro(i,k));
    
             }
    
    
            public void Test()
            {
                Sample(Double);
                Sample(Divide);   //委托
                Sample(delegate(int i) { return i * 2; });  //匿名方法
                Sample(i => i * 2);   //Lambda表达式
                Sample(i => Convert.ToInt32(i / 2));
                Sample2((i, k) => i * k);
    
            }
    View Code
  • 相关阅读:
    【程序员日记】快乐的一周嘛(第7期)(财富、快乐、技术)
    zCloud使用技巧:如何使用性能下钻功能分析SQL性能问题
    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵
    团队一致性的PHP开发环境之Docker
    团队一致性的PHP开发环境之Docker
    团队一致性的PHP开发环境之Docker
    qcow2快照原理
    qcow2快照原理
    qcow2快照原理
    qcow2快照原理
  • 原文地址:https://www.cnblogs.com/etoah/p/4248684.html
Copyright © 2011-2022 走看看