• Lambda表达式的前世今生


    namespace ConSole
    {
        public class Delegates
        {
            public delegate void DeleGatemodel1();
            public delegate void DeleGatemodel2(int x, int y);
            public delegate string DeleGatemodel3();
            public delegate int DeleGatemodel4(int x, int y);
    
    
        }
    
        /// <summary>
        /// Lambda表达式的前世今生
        /// </summary>
        public class ActionShow
        {
            /// <summary>
            /// 最初形式
            /// </summary>
            public static void LambdaAction1()
            {
                Delegates.DeleGatemodel2 metod1 = new Delegates.DeleGatemodel2(
                    delegate (int x, int y)
                    {
                        Console.WriteLine("x的值为{0},y的值为{1}", x, y);
                    });
                metod1.Invoke(2, 3);
            }
    
            public static void LambdaAction2()
            {
                //箭头左边是参数,右边是方法体
                Delegates.DeleGatemodel2 metod1 = new Delegates.DeleGatemodel2(
                    (int x, int y) =>
                    {
                        Console.WriteLine("x的值为{0},y的值为{1}", x, y);
                    });
                metod1.Invoke(2, 3);
            }
    
            public static void LambdaAction3()
            {
                Delegates.DeleGatemodel2 metod1 = new Delegates.DeleGatemodel2(
                    (x, y) => //参数类型去掉,原因:传入的方法必须满足委托的约束
                    {
                        Console.WriteLine("x的值为{0},y的值为{1}", x, y);
                    });
                metod1.Invoke(2, 3);
            }
    
            public static void LambdaAction4()
            {
    
                Delegates.DeleGatemodel2 metod1 = (x, y) => //去除 new Delegates.DeleGatemodel2(
                {
                    Console.WriteLine("x的值为{0},y的值为{1}", x, y);
                };
                metod1.Invoke(2, 3);
            }
    
            public static void LambdaAction5()
            {
                //去除大括号,条件:方法体只有一行
                Delegates.DeleGatemodel2 metod1 = (x, y) => Console.WriteLine("x的值为{0},y的值为{1}", x, y);
                metod1.Invoke(2, 3);
            }
    
            //===============================================================================================
            /// <summary>
            /// Lambda表达式使用1
            /// </summary>
            public static void LambdaAction7()
            {
                Delegates.DeleGatemodel2 metod1 = (x, y) => Console.WriteLine("x的值为{0},y的值为{1}", x, y);
                metod1.Invoke(1, 2);
            }
    
            //结论:Lambda是一个匿名方法
    
            //================================================================================================
            //写一个带参数待返回值
            public static void LambdaAction8()
            {
                Delegates.DeleGatemodel4 metod = (x, y) => { return x + y; };
                //简化
                Delegates.DeleGatemodel4 metod1 = (x, y) => x + y;
            }
    
            //写一个无参无返回值
            public static void LambdaAction9()
            {
                Delegates.DeleGatemodel1 metod = () => { };
                Delegates.DeleGatemodel1 metod1 = () => { Console.WriteLine("这里可以进行一些操作!"); };
                
            }
            
            //写一个无参有返回值
            public static void LambdaAction10()
            {
                Delegates.DeleGatemodel3 metod = () => "";
                Delegates.DeleGatemodel3 metod1 = () => { return ""; };
            }
    
            //================================================================================================
            //系统自带委托
    
            //有参无返回值
            Action at = () => { };//无参无返回值
            Action<string> at1 = x => { };//按f12 public delegate void Action<in T>(T obj);
            //这路最多只有16个参数
            Action<string, int, long, Action> at2 = (x, y, z, t) => { };
    
            //无参带返回值 f12=public delegate TResult Func<out TResult>();
            Func<string> fc = () => { return ""; };
            Func<string> fc1 = () => "";
    
            public static void LambdaAction11()
            {
                Action ac = () => { };
                //有参有返回值
                Func<string,int, Action> fc3 = (x, a) => ac;
            }
            
        }
    }
    

      

  • 相关阅读:
    linux驱动摸索 --驱动框架初始化(结合韦东山视频教程)
    LWIP的移植笔记
    linux命令大全
    Linux中断(interrupt)子系统之一:中断系统基本原理
    Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解
    Linux下PCI设备驱动程序开发 --- PCI驱动程序实现(三)
    VC++定义全局变量及extern用法
    [转]VS 2012环境下使用MFC进行OpenGL编程
    [转]在C++中容易出现的#error No Target Architecture
    实例详解:MFC坐标轴实现
  • 原文地址:https://www.cnblogs.com/MingQiu/p/8358460.html
Copyright © 2020-2023  润新知