C# lambda表达式原理定义及实例详解
定义:"Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式。
好处:Lambda简化了匿名委托的使用,减少开发中需要编写的代码量。
写法:所有Lambda表达式都使用Lambda运算符=>,该运算符读作"goesto"。Lambda运算符的左边是输入参数(如果有),右边是表达式或语句块。Lambda表达式x=>x*x读作"xgoestoxtimesx"。
注:(左边)输入参数为1个时可以省略小括号,(右边)表达式只有一句时可以省略大括号和return语句
具体的语法形式如下。
访问修饰符修饰符返回值类型方法名(参数列表)=>表达式;
publicstaticintAdd(inta,intb)=>a+b;
一般lambda表达式用于创建委托或表达式树类型。
delegateintdel(inti);
delmyDelegate=x=>x*x;//这里的x代表的就是int类型的参数,c#会自动对其锁定类型。
Lambda的本质就是方法(匿名方法)。
闭包
通过lambda表达式可以访问lambda表达式块外的变量,这称为闭包。
intlamValue=5;
Func
sum=x=>x+lamValue;
这样做会有危险,因为当外部变量的值变动时,也会影响sum的结果。
lambda内部实现过程
编译器会创建一个匿名类,它有一个构造函数来传递外部变量。
publicclassAnonymousClass{ publicintlamValue; publicAnonymousClass(intlamValue){ this.lamValue=lamValue; } publicintAnonymousMethod(intx)=>x+lamValue; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。