C# 匿名表达式(Lambda表达式)

匿名表达式

这次来说说Lambda表达式吧,反正也简单,我也不像其他高手那样强调来强调去,只讲一下方法;

 

准备条件如下:

第一,匿名表达式必须存在与之对应的委托。

 

 

只要存在相对应的委托就可以了。接下来看图就可以了。这里有个Winform的Form_Load事件,首先我们要看函数签名,也就是有多少个形参,因为匿名方程需要和相对应的委托对应

这里可以看到,Winform::Form_Load方法的委托是EventHandler:

这时候我们要去速览一下定义,VisualStudio的速览定义是一个好东西,一定要好好使用撒~

点一下Load事件,这时候因为是标识符,所以VS会帮助我们圈定这个事件,然后我们可以通过Alt+F12键进行定义速览

,如果用F12的话是跳转到定义文件里面,效果会是这样的:

速览定义就是在页面内浏览,他会有一个小窗口,而转到定义是跳到他的定义页面里面。这里我们可以看到他的事件类型是EventHandler,很好这是系统内置的委托,也是标准的委托,这时候我们需要对EventHandler进行一次定义速览,看看他有什么签名:

这时候我们得到了他的签名,

然后使用匿名表达式就可以了:

() =>{}//匿名表达式长这样的
/*
*
*
*/
(参数列表)=>
{
//代码块
}

括号里面实际上是形参列表,比如Load事件,那么就是(obj,e),括号里面的变量不需要声明,只需要敲几个关键字就可以了,类型也不用声明,他和对应委托签名里面的变量类型对应的,也是按照顺序的。

花括号里面的代码是可以像平时一样写。

 

总结一下,匿名表达式实际上很简单,首先是参数列表,这个参数列表不能自己定义,一定要和对应的委托进行对应,有几个参数写几个,参数名可以和委托里面的重复(我经常这么干,便于记忆)但是切记,变量不能和匿名表达式不能和局部变量重名。花括号里面就是你要处理的代码。=>不能少,花括号后面有时候需要接;分号,取决于这个匿名表达式是在结尾还是在函数体里面。

 

下面我给出几个匿名表达式的应用例子以及应用场景

 

 

匿名表达式实际上是隐式创建一个方法体,只不过方法体的名称什么的都直接省去了,函数签名则引用对应的委托。但是匿名表达式括号里面的形参必须是未重名的,否则会出错。

编者注:匿名表达式作为参数在方法里面,要注意换行,不然很难看,并且不建议直接在方法里面写匿名,因为很难看。亲身体验过

posted @ 2016-08-17 14:14  丹麦的鱼  阅读(2018)  评论(0编辑  收藏  举报