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变量的控制,结果不可控,容易出现编程问题,用的时候要谨慎。

results matching ""

    No results matching ""