本文共 2824 字,大约阅读时间需要 9 分钟。
直接上代码讲解
public class LambadaOne { //lambada 表达式的前世今生 public delegate void lambadaNoPar(); public delegate void lambadaTwoPar(string name,string password); public delegate void lambadaOnePar(string name); public void lambadaShow() { //原始的调用直接就是个委托 /* lambadaNoPar ln = new lambadaNoPar(Show); ln.Invoke(); */ //演变2 把方法呢直接放在委托里面,用delegate声明,去掉调用方法的 public void public void Show,只留下括号里面的参数 /* lambadaNoPar ln = new lambadaNoPar( delegate() { Console.WriteLine("qqqqqqq"); }); ln.Invoke();*/ //演变3 去掉 delegate 关键字 在参数后面直接加上=>; =>是goto的意思 /* lambadaNoPar ln = new lambadaNoPar( ()=> { Console.WriteLine("qqqqqqq"); });; ln.Invoke()*/ //演变4:当有参数的时候呢,直接去掉参数前面的定义的参数类型 /* lambadaTwoPar ln = new lambadaTwoPar(( name, password) => { Console.WriteLine("qqqqqqq"); }); ln.Invoke(null, null);*/ //演变5:方法中呢,只有一行代码,直接去掉大括号,这时候呢,其实这个 /*lambadaTwoPar ln = new lambadaTwoPar(( name, password) => Console.WriteLine("qqqqqqq")); ln.Invoke(null, null);*/ //演变6:直接去掉了 new lambadaTwoPar() /* lambadaTwoPar ln = (name, password) => Console.WriteLine("qqqqqqq"); ln.Invoke(null, null);*/ //其中当参数只有一个的时候呢,直接去掉参数的括号 lambadaOnePar ln = name => Console.WriteLine("qqqqqqq"); ln.Invoke(null); //lambada的本质呢其实右边的匿名方法,其实呢就是个方法 } public void Show() { Console.WriteLine("qqqqqqq"); } public void Show(string name,string password) { Console.WriteLine("qqqqqqq"); } }
原始的调用直接就是个委托
lambadaNoPar ln = new lambadaNoPar(Show); ln.Invoke(); 演变2: 把方法呢直接放在委托里面,用delegate声明,去掉调用方法的 public void public void Show,只留下括号里面的参数 lambadaNoPar ln = new lambadaNoPar( delegate() { Console.WriteLine(“qqqqqqq”); }); ln.Invoke() 演变3: 去掉 delegate 关键字 在参数后面直接加上=>; =>是goto的意思 lambadaNoPar ln = new lambadaNoPar( ()=> { Console.WriteLine(“qqqqqqq”); });; ln.Invoke() **演变4:**当有参数的时候呢,直接去掉参数前面的定义的参数类型 lambadaTwoPar ln = new lambadaTwoPar(( name, password) => { Console.WriteLine(“qqqqqqq”); }); ln.Invoke(null, null); **演变5:**方法中呢,只有一行代码,直接去掉大括号,这时候呢,其实这个方法叫匿名方法 lambadaTwoPar ln = new lambadaTwoPar(( name, password) => Console.WriteLine(“qqqqqqq”)); ln.Invoke(null, null); **演变6:**直接去掉了 new lambadaTwoPar() lambadaTwoPar ln = (name, password) => Console.WriteLine(“qqqqqqq”); ln.Invoke(null, null); //其中当参数只有一个的时候呢,直接去掉参数的括号 lambadaOnePar ln = name => Console.WriteLine(“qqqqqqq”); ln.Invoke(null);**lambada的本质呢其实右边的匿名方法,其实呢就是个方法**
转载地址:http://zlqoz.baihongyu.com/