zoukankan      html  css  js  c++  java
  • C#中的lambda表达式

    定义:"Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式。

    好处:Lambda简化了匿名委托的使用,减少开发中需要编写的代码量。

    写法:所有Lambda表达式都使用Lambda运算符=>,该运算符读作"goes to"。Lambda运算符的左边是输入参数(如果有),右边是表达式或语句块。Lambda表达式x => x * x读作"x goes to x times x"。

    注:(左边)输入参数为1个时可以省略小括号,(右边)表达式只有一句时可以省略大括号和return语句

    具体的语法形式如下。

    访问修饰符    修饰符    返回值类型    方法名(参数列表) => 表达式;

    public static int Add(int a, int b) => a + b;

    一般lambda表达式用于创建委托或表达式树类型。

    delegate int del(int i);

    del myDelegate = x => x*x;  //这里的x代表的就是int类型的参数,c#会自动对其锁定类型。

    Lambda的本质就是方法(匿名方法)。

     闭包

    通过lambda表达式可以访问lambda表达式块外的变量,这称为闭包。

    int lamValue = 5;

    Func<int,int> sum = x => x+lamValue;

    这样做会有危险,因为当外部变量的值变动时,也会影响sum的结果。

    lambda内部实现过程

    编译器会创建一个匿名类,它有一个构造函数来传递外部变量。

    public class AnonymousClass{

      public int lamValue;

      public AnonymousClass(int lamValue){

        this.lamValue = lamValue;

      }

      public int AnonymousMethod(int x) => x+lamValue;

    }

        

  • 相关阅读:
    1026 Table Tennis (30)
    1029 Median
    1025 PAT Ranking (25)
    1017 Queueing at Bank (25)
    1014 Waiting in Line (30)
    1057 Stack (30)
    1010 Radix (25)
    1008 Elevator (20)
    字母大小写转换
    Nmap的基础知识
  • 原文地址:https://www.cnblogs.com/1016391912pm/p/11618972.html
Copyright © 2011-2022 走看看