Lamda進化史

8773 ワード

この論文はコード実践に重点を置いています。理論は移行してください。http://www.cnblogs.com/zhaopei/p/5767631.html
依頼->匿名の方法->Fun&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(); } /// /// /// void Test1() { AddDelegate add = new AddDelegate(delegate(int a,int b) { return a + b; }); int num = add(1, 5); Console.WriteLine(num); } Funnc&アクション /// /// /// 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"); }ラムダ誕生 /// /// /// 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)); } /// /// /// 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)); } /// /// /// void T3() { Func<int,int> add= (a) => 10 + a; add = a => 10 + a; }Lamda非同期 public void Run() { /// , Wait !!!!!!!!!! T1().Wait(); } /// /// /// /// 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