zoukankan      html  css  js  c++  java
  • 为什么推荐使用Lamda表达式

          最近参加一次培训的时候,发现部分人对委托这个概念很模糊,委托这些概念是.NET高级编程中的,当一个程序员经过一个阶段的学习之后,想要有一个提高,这时候学习这些概念就是必须的了,所以在讲Lamda表达式时,把这委托,匿名委托(匿名方法),Lamda表达式这几个概念整理了一下。

          网上这方面的例子很多,但是对于起步阶段的人来说,这些例子显的晦涩了,所以我举得例子中,为了更清楚的说明这三者的关系,将淡化其内部实现的功能。

         首先讲委托,在.NET中,委托这个概念有点类似于C/C++中的函数指针,但与指针不同的是,委托是一种安全的类型,那么我们就以实现两个数的差值为例,首先声明返回值为int的一个成员方法:  

    public int CompareTwoValue(int a, int b)
    {
    int c=a-b;
    return c;
    }

     接着声明一个委托: 

    public delegate int deleMethod(int a,int b);

       然后,我们可以通过这个委托调用这个上面的成员方法,

    public int Show()
    {
    deleMethod d1
    = new deleMethod(CompareTwoValue);
    return d1(5,10);
    }

     那么,关于委托的概念,我就讲到这里,接着说明一下,匿名委托,其实也称作匿名方法,其实,这只是一种语法形式上的变化,因为编译的时候,还是要进行类型匹配的,那么对于上面的Show方法,我可以使用匿名委托的方式来表达 

    public int Show1()
    {
    deleMethod d2
    = delegate(int a, int b)
    {
    int c=a-b;
    return c;
    };
    return d2(5,10);
    }

    可以看出,语法形式上简便了,所以我个人觉得匿名委托在C#2.0中并没有实质性的用处,因为到3.0时,涉及到Lamda表达式时,才真正的有用处,那么上面的方法,如果用Lamda表达式表述如下:

    public int Show2()
    {
    Func
    <int, int, int> f = ( a,b) =>
    {
    return a - b;
    };
    return f(5,10);
    }

    初次接触Lamda表达式时感觉很难懂,但是一旦理解了之后,我就很喜欢这种表达方式,其实,Lamda表达式只是匿名委托的一种表现形式,从上面的结果可以很直观的看出,三种方式中,Lamda表达式编写的代码量最少,最后看一下执行的结果

    TestExample test = new TestExample();
    Console.WriteLine(test.Show());
    Console.WriteLine(test.Show1());
    Console.WriteLine(test.Show2());

    结果是一致的,其实三者的功能是一致的,只是表现形式不一样,而三种方法中,Lamda表达式编写的代码量最少。

    ps:第一次把博客发首页,不足之处希望大家拍砖

  • 相关阅读:
    值币转换编程总结
    打印沙漏编程总结
    Leetcode每日一题 面试题 17.21. 直方图的水量
    VS2017-OPENGL配置glfw+glad
    OpenGL(二) 绘制一个三角形
    OpenGL(一) 渲染循环创建窗口
    Leetcode每日一题 1006.笨阶乘
    Leetcode每日一题 90.子集 II
    Leetcode每日一题 190.颠倒二进制位
    Leetcode 第243场周赛 创新奇智&力扣
  • 原文地址:https://www.cnblogs.com/626498301/p/Tecy.html
Copyright © 2011-2022 走看看