Lambda表达式
从C#3.0开始,可以使用Lambda表达式代替匿名方法。只要有委托参数类型的地方就可以使用Lambda表达式。
Func<int,int,int> plus = (a,b)=>{ int temp= a+b;return temp; };
int res = plus(34,34);
Console.WriteLine(res);
Lambda运算符“=>”的左边列出了需要的参数,如果是一个参数可以直接写 a=>(参数名自己定义),如果多个参数就使用括号括起来,参数之间以","间隔
多行语句
1,如果Lambda表达式只有一条语句,在方法快内就不需要花括号和return语句,编译器会自动添加return语句
2,如果Lambda表达式的实现代码中需要多条语句,就必须添加花括号和return语句。
Func<double,double> square = x=>x*x;
//添加花括号,return语句和分号是完全合法的
Func<double,double> square = x=>{
return x*x;
}
Lambda表达式外部的变量
通过Lambda表达式可以访问Lambda表达式块外部的变量。这是一个非常好的功能,但如果不能正确使用,也会非常危险。示例:
int somVal = 5;
Func<int,int> f = x=>x+somVal;
Console.WriteLine(f(3));//8
somVal = 7;
Console.WriteLine(f(3));//10
这个方法的结果,不但受到参数的控制,还受到somVal变量的控制,结果不可控,容易出现编程问题,用的时候要谨慎。