zoukankan      html  css  js  c++  java
  • 匿名方法与lambda表达式

    匿名方法,从字面上理解即是没有名字的的方法。用delegate关键字进行声明且只能赋值给一个委托

    for example1

    static void Main(string[] args){
      Fun<int,int,int> plus =delegate(int arg1,int arg2)
    {
       return arg1+arg2
    }
    }

    ps:经常用作回调

    从c#3.0后又开始使用Lambda表达式来代替匿名函数,只要在有委托参数类型的地方就可以使用lambda表达式比如example1

    static void Main(string[] args){
      Fun<int,int,int> plus =( arg1, arg2)=>//委托已经声明了参数类型,别忘记“=>”这个符号
    {
       return arg1+arg2
    }
    }
    ps:


    Func<int, int> test2 = a => a+1;//lambda表示的参数只有一个的时候,

    //可以不加上括号 当函数体的语句只有一句的时候,我们可以不加上大括号 也可以不加上return语句

    
    

    值得注意的是通过Lambda表达式可以访问Lambda表达式块外部的变量。这是一个非常好的功能,但如果不能正确使用,也会非常危险。示例:

    int somVal = 5;
    Func<int,int> f = x=>x+somVal;
    Console.WriteLine(f(3));//8
    somVal = 7;
    Console.WriteLine(f(3));//10

    这个方法的结果,不但受到参数的控制,还受到somVal变量的控制,结果不可控,容易出现编程问题,用的时候要谨慎。

  • 相关阅读:
    drf-通过drf-extensions扩展来实现缓存
    social_django第三方登录 没有token解决方法
    python-项目日志配置使用
    drf-支付宝支付
    git 相关命令
    django第三方登录与邮箱验证流程
    django项目部署
    数组中的方法
    滚动到页面底部,更新数据
    图片卷边
  • 原文地址:https://www.cnblogs.com/jiangxiaoming/p/13088156.html
Copyright © 2011-2022 走看看