C#之Lambda表达式
Lambda表达式其实就是匿名方法的进一步简写,也就是匿名方法的升级版。
Lambda表达式语法:
委托类型 变量 = ([参数列表])=> { 方法体; };
注意点:
1.=> 是Lambda 表达式特有符号,读作goes to
2.如果没有参数列表,()也不能省略,如:()=>
pro.noPad = () => { Console.WriteLine("我是Test01"); };
3.如果参数列表中只有一个参数,()可以省略
pro.Pad = str => { Console.WriteLine("我是{0}", str); };
4.如果方法体内只有一句代码,可以省略代码块符号,也就是不用写{ }
pro.Pad = (str) => Console.WriteLine("我是{0}", str); ; pro.Pad = str => Console.WriteLine("我是{0}", str); ;
代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace anonymousMethods { class Program { public delegate void noParameterDelegate(); //无参委托 public delegate void parameterDelegate(string str); //有参委托 public noParameterDelegate noPad; public parameterDelegate Pad; static void Main(string[] args) { Program pro = new Program(); //老方法 //pro.noPad = Test01; //pro.Pad = Test02; //pro.noPad(); //pro.Pad("武武武"); //匿名方法 //pro.noPad = delegate () { Console.WriteLine("我是Test01"); }; //pro.Pad = delegate (string str) { Console.WriteLine("我是{0}", str); }; //Lambda表达式 pro.noPad = () => { Console.WriteLine("我是Test01"); }; pro.Pad = (str) => { Console.WriteLine("我是{0}", str); }; //一下三句话每句都可以替换掉第35句,即注释上面的这句话 //pro.Pad = str => { Console.WriteLine("我是{0}", str); }; //pro.Pad = (str) => Console.WriteLine("我是{0}", str); ; //pro.Pad = str => Console.WriteLine("我是{0}", str); ; pro.noPad(); pro.Pad("武武武"); Console.ReadKey(); } /* public static void Test01() { Console.WriteLine("我是Test01"); } public static void Test02(string str) { Console.WriteLine("我是{0}",str); }*/ } }

浙公网安备 33010602011771号