C# 匿名表达式(Lambda表达式)
匿名表达式
这次来说说Lambda表达式吧,反正也简单,我也不像其他高手那样强调来强调去,只讲一下方法;
准备条件如下:
第一,匿名表达式必须存在与之对应的委托。
只要存在相对应的委托就可以了。接下来看图就可以了。这里有个Winform的Form_Load事件,首先我们要看函数签名,也就是有多少个形参,因为匿名方程需要和相对应的委托对应

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

这时候我们要去速览一下定义,VisualStudio的速览定义是一个好东西,一定要好好使用撒~
点一下Load事件,这时候因为是标识符,所以VS会帮助我们圈定这个事件,然后我们可以通过Alt+F12键进行定义速览

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

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

这时候我们得到了他的签名,
然后使用匿名表达式就可以了:
() =>{}//匿名表达式长这样的
/*
*
*
*/
(参数列表)=>
{
//代码块
}
括号里面实际上是形参列表,比如Load事件,那么就是(obj,e),括号里面的变量不需要声明,只需要敲几个关键字就可以了,类型也不用声明,他和对应委托签名里面的变量类型对应的,也是按照顺序的。

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

匿名表达式实际上是隐式创建一个方法体,只不过方法体的名称什么的都直接省去了,函数签名则引用对应的委托。但是匿名表达式括号里面的形参必须是未重名的,否则会出错。
(编者注:匿名表达式作为参数在方法里面,要注意换行,不然很难看,并且不建议直接在方法里面写匿名,因为很难看。亲身体验过)
C# 匿名表达式(Lambda表达式)的更多相关文章
- Unity C# 多态 委托 事件 匿名委托 Lambda表达式 观察者模式 .NET 框架中的委托和事件
一.多态 里氏替换原则: 任何能用基类的地方,可以用子类代替,反过来不行.子类能够在基类的基础上增加新的行为.面向对象设计的基本原则之一. 开放封闭原则: 对扩展开放,意味着有新的需求或变化时,可以对 ...
- C# delegate event func action 匿名方法 lambda表达式
delegate event action func 匿名方法 lambda表达式 delegate类似c++的函数指针,但是是类型安全的,可以指向多个函数, public delegate void ...
- 【Unity|C#】基础篇(9)——匿名函数 / Lambda表达式
[学习资料] <C#图解教程>(第13章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...
- 匿名函数 lambda表达式(lambda expression)
阅读g2log时,发现有两行代码居然看不懂. 1. auto bg_call = [this, log_directory]() {return pimpl_->backgroundChang ...
- 18、(番外)匿名方法+lambda表达式
概念了解: 1.什么是匿名委托(匿名方法的简单介绍.为什么要用匿名方法) 2.匿名方法的[拉姆达表达式]方法定义 3.匿名方法的调用(匿名方法的参数传递.使用过程中需要注意什么) 什么是匿名方法? 匿 ...
- 委托-异步调用-泛型委托-匿名方法-Lambda表达式-事件【转】
1. 委托 From: http://www.cnblogs.com/daxnet/archive/2008/11/08/1687014.html 类是对象的抽象,而委托则可以看成是函数的抽象.一个委 ...
- C#多线程+委托+匿名方法+Lambda表达式
线程 下面是百度写的: 定义英文:Thread每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段,它 ...
- C#委托总结-匿名方法&Lambda表达式
1,匿名方法 匿名方法可以在声明委托变量时初始化表达式,语法如下 之前写过这么一段代码: delegate void MyDel(string value); class Program { void ...
- 委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解
1.使用简单委托 namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyB ...
- (28)C#委托,匿名函数,lambda表达式,事件
一.委托 委托是一种用于封装命名和匿名方法的引用类型. 把方法当参数,传给另一个方法(这么说好理解,但实际上方法不能当参数,传入的是委托类型),委托是一种引用类型,委托里包含很多方法的引用 创建的方法 ...
随机推荐
- 64位windows7 上安装32位oracle 10g 的方法
操作系统: windows7 中文旗舰版 oracle安装版本: 10.2.0.1 中文版,升级补丁至 10.2.0.3 下面说正题首先,我们要解除oracle安装的windows版本检测1.编辑安装 ...
- 如何当好党支部书记 z
如何当好党支部书记 党支部书记是党支部一班人的“班长”,一个党支部是否具有坚强的战斗力,能否发挥好战斗堡垒作用,在很大程度上取决于是不是有一个得力的支部书记.在改 革开放,全面建设小康社会,构建社会主 ...
- 继续畅通工程 HDOJ--1879
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- NodeAsp——像开发NodeJS应用一样玩转ASP
NodeAsp是一套Classic ASP框架,借鉴了NodeJS的模块化思想,让您可以使用全新的理念愉快地书写ASP程序. NodeAsp使用遵循CommonJS规范的require,完全兼容Nod ...
- 你需要知道的10位Java开发牛人
1.James Gosling 1983 年,Gosling 获得了加州大学的计算机科学学士学位.1990 年,他获得了卡内基梅隆大学的计算机科学博士学位,师从 BobSproull.在攻读博士期间, ...
- WCF、.Net Remoting、Web Service概念及区别
此文章主要参考http://www.cnblogs.com/weiweibtm/archive/2013/06/21/3148583.html 参考书籍<WCF全面解析上册>.<WC ...
- UNITY打包问题
1,打包有二种,打包可执行程序-player,打包资源包-assetbundle 2,打包player后,在PC平台去看打包后对应的资源大小,发现比原始资源小得多,模型资源压缩率约60%,图资源压缩率 ...
- JavaScript实现拖拽预览,AJAX小文件上传
本地上传,提前预览(图片,视频) 1.html中div标签预览显示,button标签触发上传事件. <div id="drop_area" style="bord ...
- 加速 Gradle 构建大型 Android 项目的方法[转]
加速 Gradle 构建大型 Android 项目的方法 时间 2016-03-14 20:38:00 Mystra 原文 http://www.wangchenlong.org/2016/03/ ...
- Win32下 Qt与Lua交互使用:配置Qt下Lua运行环境
Lua与C++之间可以实现非常强的交互性.Lua中可以使用C++中的函数,C++中也可以使用Lua中的函数.由此可以引发出很多奇思妙想了. 简单来说,Lua动态的特性补充了C++的功能.当然,也看你具 ...