zoukankan      html  css  js  c++  java
  • lambda演变历史

        class LandmadaShow
        {
            public delegate void NoReturnWithPara(string name);
    
            //lambda演变历史
            public void Show()
            {
    
                {
                    //.NetFramework1.0  1.1
                    NoReturnWithPara noReturnWithPara = new NoReturnWithPara(this.DoNothing);
                    noReturnWithPara.Invoke("王大师");
                }
                int i = 10;
                {
                    //.NetFramework2.0  匿名方法,delegate关键字
                    //可以访问局部变量
                    NoReturnWithPara noReturnWithPara = new NoReturnWithPara(delegate (string name)
                    {
                        Console.WriteLine(name);
                        Console.WriteLine(i);
                    });
                    noReturnWithPara.Invoke("王大师");
                }
    
                {
                    //.NetFramework3.0   把delegate关键字去掉,增加了一个箭头goes to
                    //lambda表达式  参数列表=>方法体
                    NoReturnWithPara noReturnWithPara = new NoReturnWithPara((string name) =>
                   {
                       Console.WriteLine(name);
                       Console.WriteLine(i);
                   });
                    noReturnWithPara.Invoke("王大师");
                }
    
                {
                    //省略参数类型,编译器的语法糖,虽然没写,编译时还是有的,根据委托推算
                    NoReturnWithPara noReturnWithPara = new NoReturnWithPara((name) =>
                    {
                        Console.WriteLine(name);
                    });
                    noReturnWithPara.Invoke("王大师");
                }
    
                {
                    //如果方法体只有一行,可以去掉大括号和分号
                    NoReturnWithPara noReturnWithPara = new NoReturnWithPara((name) => Console.WriteLine(name));
                    noReturnWithPara.Invoke("王大师");
                }
    
                {
                    //new NoReturnWithPara可以省掉,也是语法糖,编译器自动加上
                    NoReturnWithPara noReturnWithPara = (name) => Console.WriteLine(name);
                    noReturnWithPara.Invoke("王大师");
                }
    
            }
            public void DoNothing(string name)
            {
                Console.WriteLine(name);
            }
        }
  • 相关阅读:
    线程状态转换
    CyclicBarrier和CountDownLatch区别
    MySQL事务原理
    DownLoadManager[20530:228829] DiskImageCache: Could not resolve the absolute path of the old directory.
    App各种Icon及Launch image的尺寸和用途
    关于iPhone开发的一些建议
    iPhone6/6Plus下app状态栏内容放大问题处理
    PDF转jpg
    ios开发学习笔记
    nil和Nil和NULL的判断
  • 原文地址:https://www.cnblogs.com/wangdash/p/11825823.html
Copyright © 2011-2022 走看看