• lambda表達式


     lambda表达式是对匿名方法的一种改进,具有更加简洁的语法和更易理解的形式,lambda表达式可以包括表达式和语句,并且可以用与创建委托或表达式目录树类型。

      lambda表达式都使用Lambda运算符=>,读作goes to。该Lambda运算符的左边是输入参数,右边包含表达式或者语句块。

    Lambda表达式的声明:(参数列表)=>{方法体}

      其中的参数列表和普通方法的参数列表相同,Lambda表达式是升级版的匿名方法,如下面语法所示:

    返回类型  方法名(参数){方法体}  //普通方法
    delegate (参数列表) {方法体}  //匿名方法
    (参数列表)=>{方法体}  //
    

     几种Lambda表达式形式:

       1.(x,y)=>x*y;   //多参数,隐式类型=>表达式

       2. x=>x*10;       //单参数,隐式类型=>表达式

       3. x=>{return x*10;};  //单参数,隐式类型=>语句块

       4.(int x)=>x*10;   //单参数,显式类型=>表达式

       5.(int x)=>{return x*10};   //单参数,显式类型=>语句块

       6.()=>Console.WriteLine();  //无参数

       举个例子:

    //求兩個整數最大值
             (int x, int y) => { return x > y ? x : y; };
          (string text) => { double d; return double.TryParse(text,out d); };
    //輸入hello world
         () => { Console.WriteLine("hello world"); };

     看了上面例子,俱你能看出,代码很简节,这些表达式,到是怎么回事呢?
      首先我们看下委托

    //委托  逛超市
            delegate int GuangChaoshi(int a);
            static void Main(string[] args)
            {
                GuangChaoshi gwl = JieZhang;
                Console.WriteLine(gwl(10) + "");   //打印20,委托的应用
                Console.ReadKey();
            }
            
            //结账
            public static int JieZhang(int a)
            {
                return a + 10;
            }

    改写成

    //委托  逛超市
            delegate int GuangChaoshi(int a);
            static void Main(string[] args)
            {          
               // GuangChaoshi gwl = JieZhang;
                GuangChaoshi gwl = p => p + 10;
                Console.WriteLine(gwl(10) + "");   //打印20,表达式的应用
                Console.ReadKey();
            }

    从上面例子中可以看出Lambda表达式是一种特殊的匿名函数。

    复杂的lambda表达式

    /// <summary>
            /// 委托  逛超市
            /// </summary>
            /// <param name="a">花费</param>
            /// <param name="b">付钱</param>
            /// <returns>找零</returns>
            delegate int GuangChaoshi(int a,int b);
            static void Main(string[] args)
            {
                GuangChaoshi gwl = (p, z) =>
                {
                    int zuidixiaofei = 10;
                    if (p < zuidixiaofei)
                    {
                        return 100;
                    }
                    else
                    {
                        return z - p - 10;
                    }
               
                };
                Console.WriteLine(gwl(10,100) + "");   //打印80,z对应参数b,p对应参数a
                Console.ReadKey();
            }

    下面我介绍一个系统指定的Fun<T>委托
     

    T 是参数类型,这是一个泛型类型的委托,用起来很方便的。

    例子

    static void Main(string[] args)
            {
                Func<int, string> gwl = p => p + 10 + "--返回类型为string";            
                Console.WriteLine(gwl(10) + "");   //打印‘20--返回类型为string’,z对应参数b,p对应参数a
                Console.ReadKey();
            }

    说明: 我们可以看到,Func<int,string>表示的是返回一个string类型,并带有int類型參數的函数。

    再看一个例子

    static void Main(string[] args)
            {
                Func<int, int, bool> gwl = (p, j) =>
                    {
                        if (p + j == 10)
                        {
                            return true;
                        }
                        return false;
                    };
                Console.WriteLine(gwl(5,5) + "");   //打印‘True’,z对应参数b,p对应参数a
                Console.ReadKey();
            }
  • 相关阅读:
    Ember.js 入门指南——计算属性(compute properties)
    Ember.js 入门指南——扩展(reopen)
    Ember.js 入门指南——类的定义、初始化、继承
    Ember.js 入门指南——目录
    Ember.js 入门指南——{{action}} 助手
    ubuntu按转jdk
    ubuntu设置电脑作为wifi热点
    一步完成linux安装jdk
    GStreamer基础教程13
    GStreamer基础教程12
  • 原文地址:https://www.cnblogs.com/xiaowuzi/p/3532600.html
Copyright © 2020-2023  润新知