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表达式,事件
一.委托 委托是一种用于封装命名和匿名方法的引用类型. 把方法当参数,传给另一个方法(这么说好理解,但实际上方法不能当参数,传入的是委托类型),委托是一种引用类型,委托里包含很多方法的引用 创建的方法 ...
随机推荐
- dev中gridview控件 z
目录:一.客户端常用1.常用API2.聚焦行变更事件3.客户端选择多行4.客户端选择行5. 获取选择的行数目6.单击行时,选中行7.通过checkbox 选择行8.选择所有行9.启动编辑框,Conta ...
- List<object>排序 z
一般我們在撰寫程式時,很常會使用到List<>來裝取自定義的類別陣列,跟一般的陣列插在哪呢?!好處是什麼?!好處就是一般的陣列需要先 宣告長度,而List<>不用,所以在資料個 ...
- C# Sending data using GET or POST ZZ
In this short article, I'll show you how to send data to a website from a C# application using GET o ...
- strcpy,memcpy,内存块重叠
前段时间准备面试,看了一些库函数的实现,在看到memcpy时,发现有处理source和destination所指内存有重叠的情况,而strcpy没有,特别模仿库函数写了这个函数,并进行了测试.以下是具 ...
- jQuery 参考手册 - 事件
事件方法会触发匹配元素的事件,或将函数绑定到所有匹配元素的某个事件. bind()向匹配元素附加一个或更多事件处理器 $(selector).bind(event,function) $(select ...
- Bzoj 1391: [Ceoi2008]order 网络流,最大权闭合图
1391: [Ceoi2008]order Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1105 Solved: 331[Submit][Statu ...
- div border-radius画圆
不要指定border-width属性: <html> <style type="text/css"> div{ border-style: solid; b ...
- Java从服务器上获取时间,动态在jsp页面显示
Java获取服务器时间,动态显示到jsp页面,大家都是到Java只能获取一次,到页面的时间是静态的,不过通过js和Java的合作,巧妙地实现此功能 本人是给电视做系统,客户要求页面能显示时间,因为电视 ...
- 关于附件控件隐藏后,在IE下不能上传,报“拒绝访问”
报错时的使用: @Html.TextBoxFor(m => m.FileName, new { style = "width:457px;", @readonly = &qu ...
- <%%>与<%=%>区别
1.<%= %>只能得到当前面定义的值.即你在这个页里有<% int a=100%>--你在下面才可以使用<%=a%>2.${ }这个是el表达式.可以从上下文中得 ...