Lamda进化史

本文侧重于代码实践,理论请移步:http://www.cnblogs.com/zhaopei/p/5767631.html

委托—>匿名方法—>Func && Anction—>Lamda诞生—->Lamda异步

委托

        public delegate void AddDelegate(int a,int b);

        public void Run()
        {
            AddDelegate add = new AddDelegate(Add);
            add(1,5);
        }

        public void Add(int a,int b)
        {
            Console.WriteLine(a+b);
        }

匿名方法

        public delegate int AddDelegate(int a,int b);

        public void Run()
        {
            Test1();

            Test2();
        }

        /// <summary>
        /// 第一次进化
        /// </summary>
        void Test1()
        {
            AddDelegate add = new AddDelegate(delegate(int a,int b) { return a + b; });
            int num = add(1, 5);
            Console.WriteLine(num);
        }

Func&&Action

        /// <summary>
        /// 第二次进化
        /// </summary>
        void Test2()
        {
            Func<int, int, string> add = new Func<int, int, string>(delegate(int a,int b) { int num = a + b;return "result is:"+num; });

            Console.WriteLine(add(10,23));
        }

        public void Run()
        {
            Test(ResultOK,ResultError);
        }

        void Test(Action ok,Action error)
        {
            if (true)
                ok();
            else
                error();
        }

        void ResultOK()
        {
            Console.WriteLine("OK");
        }

        void ResultError()
        {
            Console.WriteLine("Error");
        }

Lamda诞生

        /// <summary>
        /// 原始
        /// </summary>
        void T1()
        {
            Func<int, int, string> Add = delegate (int a, int b) { int num = a + b; return (a + b).ToString(); };
            Console.WriteLine(Add(300, 400));
        }

        /// <summary>
        /// 多参数
        /// </summary>
        void T2()
        {
            Func<int, int, string> Add = (int a, int b) => { int num = a + b; return (a + b).ToString(); };
            Add = (a, b) => { return (a + b).ToString(); };
            Add = (a,b) => (a + b).ToString();
            Console.WriteLine(Add(6, 400));
        }

        /// <summary>
        /// 单参数
        /// </summary>
        void T3()
        {
            Func<int,int> add= (a) => 10 + a;
            add = a => 10 + a;
        }

Lamda异步

        public void Run()
        {
            ///无返回值的类型,可以直接用Wait代替!!!!!!!!!!
            T1().Wait();
        }


        /// <summary>
        /// 异步操作
        /// </summary>
        /// <returns></returns>
        async Task T1()
        {
            Func<string, Task<string>> func = async t => { await Task.Delay(300); Console.WriteLine(t); return "aa"; };
            string data = await func("aaa");
            Console.WriteLine(data);




            Func<int, int, Task> func1 = async (a, b) => { await Task.Delay(500); Console.WriteLine(a + b); };

            func1(10, 20).Wait() ;
        }

源码下载地址:http://download.csdn.net/detail/fwj380891124/9636185

posted @ 2022-12-03 09:10  星火燎猿*  阅读(13)  评论(0)    收藏  举报