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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星火燎猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值