匿名表达式

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

准备条件如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C# 匿名表达式(Lambda表达式)的更多相关文章

  1. Unity C# 多态 委托 事件 匿名委托 Lambda表达式 观察者模式 .NET 框架中的委托和事件

    一.多态 里氏替换原则: 任何能用基类的地方,可以用子类代替,反过来不行.子类能够在基类的基础上增加新的行为.面向对象设计的基本原则之一. 开放封闭原则: 对扩展开放,意味着有新的需求或变化时,可以对 ...

  2. C# delegate event func action 匿名方法 lambda表达式

    delegate event action func 匿名方法 lambda表达式 delegate类似c++的函数指针,但是是类型安全的,可以指向多个函数, public delegate void ...

  3. 【Unity|C#】基础篇(9)——匿名函数 / Lambda表达式

    [学习资料] <C#图解教程>(第13章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...

  4. 匿名函数 lambda表达式(lambda expression)

    阅读g2log时,发现有两行代码居然看不懂. 1. auto bg_call =  [this, log_directory]() {return pimpl_->backgroundChang ...

  5. 18、(番外)匿名方法+lambda表达式

    概念了解: 1.什么是匿名委托(匿名方法的简单介绍.为什么要用匿名方法) 2.匿名方法的[拉姆达表达式]方法定义 3.匿名方法的调用(匿名方法的参数传递.使用过程中需要注意什么) 什么是匿名方法? 匿 ...

  6. 委托-异步调用-泛型委托-匿名方法-Lambda表达式-事件【转】

    1. 委托 From: http://www.cnblogs.com/daxnet/archive/2008/11/08/1687014.html 类是对象的抽象,而委托则可以看成是函数的抽象.一个委 ...

  7. C#多线程+委托+匿名方法+Lambda表达式

    线程 下面是百度写的: 定义英文:Thread每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段,它 ...

  8. C#委托总结-匿名方法&Lambda表达式

    1,匿名方法 匿名方法可以在声明委托变量时初始化表达式,语法如下 之前写过这么一段代码: delegate void MyDel(string value); class Program { void ...

  9. 委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解

    1.使用简单委托 namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyB ...

  10. (28)C#委托,匿名函数,lambda表达式,事件

    一.委托 委托是一种用于封装命名和匿名方法的引用类型. 把方法当参数,传给另一个方法(这么说好理解,但实际上方法不能当参数,传入的是委托类型),委托是一种引用类型,委托里包含很多方法的引用 创建的方法 ...

随机推荐

  1. 请求转发:MVC设计模式、细节、请求域属性的编程实例、请求重定向和请求转发的区别

      请求转发:MVC设计模式.细节.请求域属性的编程实例.请求重定向和请求转发的区别 MVC设计模式将一次请求的响应过程分成三个功能模块(一般称之为层)来协同完成,这三个模块分别是Model(模型层) ...

  2. HTMLTestRunner 自动化测试报告

    http://tungwaiyip.info/software/HTMLTestRunner.html下载,将下载后的文件放在python的Lib目录下 # -*- coding:utf-8 -*- ...

  3. 参考SQLHelper编写的OracleHelper

    使用 Oracle.ManagedDataAccess.Client 类库参考SQLHelper编写的OracleHelper: // ================================ ...

  4. 基于WCF大型分布式系统的架构设计

    在大型系统中应用中,一个架构设计较好的应用系统,其总体功能肯定是由很多个功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一个或多个表.而在架构设计中,各个功能模块相互之间的交互点 越统 ...

  5. wojilu中的路由

    要看2个地方,一个是route.config,另一个是wojilu.Members.Sites.Domain.SiteMenu.config,这2部分综合起作用.

  6. Ubuntu安装secureCRT

    在使用secureCRT前确保主机的ssh服务是启动状态. 一.下载secureCRT包 site:  https://www.vandyke.com/download/securecrt/downl ...

  7. Java新手入门必须掌握的30个基本概念

    今天给大家推荐的文章是有关Java基本概念的,掌握好这些基本概念对学习J2SE.J2EE.J2ME都很重要,也能更好地理解Java的精髓,初学者要注意啦! ▶Java概述: 目前Java主要应用于中间 ...

  8. Delphi的四舍五入函数

    一.四舍五入法    四舍五入是一种应用非常广泛的近似计算方法,其有算术舍入法和银行家舍入法两种.    所谓算术舍入法,就是我们通常意义上的四舍五入法.其规则是:当舍去位的数值大于等于5时,在舍去该 ...

  9. hdu 单调队列

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4122 代码: #include<cstdio> #include<iostream& ...

  10. 【转】Flask安装

    Flask 依赖两个外部库:Werkzeug 和 Jinja2 . Werkzeug 是一个 WSGI(在 Web 应用和多种服务器之间的标准 Python 接口) 工具集.Jinja2 负责渲染模板 ...