zoukankan      html  css  js  c++  java
  • lambda表达式

      lambda表达式其实就是匿名委托的一个精简版。
      public delegate void Del1();
      Del1 d1 = delegate(){Console.WriteLine("ss");};
      d1 = ()=>{Console.WriteLine("ss");};   //  由于没有参数,那么()不能省略
      public delegate int Del2();
      Del2 d2 = delegate(){return 1;};
      d2 = ()=>{return 1;};
      如果是直接返回,换句话说就是没有业务逻辑处理,也就是只有一条返回语句,可以把{}换成()同时去掉return关键字
      d2=()=>(1);
      如果方法体中有业务逻辑,则必须使用{}
      d2=()=>{if(2>1){return 1;}else{return 2;}};
      public delegate void Del3(string a);
      Del3 d3 = delegate(string a){Console.WriteLine(a);};
      d3 = (stirng a)=>{Console.WriteLine(a);};
      可以把参数的类型给去掉,因为系统会自行的判断参数的类型,毕竟是把这个lambda赋值给了对应的委托。
      d3 = (a)=>{Console.WriteLine(a);};
      如果说只有一个参数,则不需要()
      d3 = a =>{Console.WriteLine(a);};
      public delegate string Del4(string a);
      Del4 d4 = delegate(string a){string c = a+78;return c;}
      d4 = (string a)=>{a+78;return a;};
      d4 = a=>{a+78;return a;}
      d4 = a=>("gg");

    View Code
     1 using System;
     2 public delegate void Delsing(int c);
     3 public delegate int DelPlus(int a ,int b);
     4 public delegate string DelString(string a,int b);
     5  public class studydelegate
     6  {
     7      public static void Main()
     8      {
     9          //有一个参数传递时
    10          Delsing d1 =c=>{Console.WriteLine(c);};
    11          //Test(d1,34);
    12          Test(c=>{Console.WriteLine(c);},56);
    13          //有两个传递参数时
    14         DelPlus d2 = (a,b)=>{int e = a+b;return e;};
    15         //Test(d2,1,2);
    16         Test((a,b)=>{int e = a+b ; return e;},7,9);
    17         DelPlus d3 =(a,b)=>(a+b);
    18         //Test(d3,6,8);
    19         Test((a,b)=>(a+b),5,7);
    20         
    21         DelString d4 = (dea,b)=>(dea+" "+b);
    22         //Test(d4,"shddfuf",88);
    23         Test((a,b)=>(a+" "+b ),"hudei",89);        
    24      } 
    25      public static void Test(Delsing d,int a)
    26      {
    27        d(a);
    28      }
    29      public static void Test(DelPlus d,int a,int b)
    30      {
    31         int e = d(a,b);
    32          Console.WriteLine(e);
    33      
    34      }
    35      public static void Test(DelString d,string a,int b)
    36      {
    37          string s = d(a,b);
    38         Console.WriteLine(s);
    39      }
    40  }

    定义一个有参委托类 

    public delegate int Del5(int a,int b);
      Del5 d5 = delegate(int a,int b){return a+b;}'
      d5 = (int a,int b)=>{return a+b;};
      d5 = (a,b)=>{return a+b;};
      如果参数个数是大于1的时候,不能把小括号给去掉
      d5 = (a,b)=>(a+b);
      d5 = (a,b)=>a+b;
      d5 = a=>a+1;

    下面我们看个练习:

  • 相关阅读:
    VUEX
    使用element框架 增加router路由
    VUE目录
    elementUI 创建
    VUE组件(父子组件)
    VUE操作DOM获取HTML、删除HTML、插入HTML
    VUE网络交互axios(网络请求库)
    VUE 或者JS 常用数据类型及方法:字符串、数组、对象
    VUE实际案例--计数器(商城数量加减)
    VUE学习 --数据类型、el挂点、指令等
  • 原文地址:https://www.cnblogs.com/QLJ1314/p/lambda.html
Copyright © 2011-2022 走看看