首先来分享一段代码:

Func<int, int, int> addMethod = (int x, int y) => (x + y);

熟悉的人肯定知道这句话是什么意思,可是不熟悉的人指定一看就头大,这就是会者不难,难者不会。

我来介绍一下上面那句话:

首先介绍赋值号(=)左面Func<int, int, int>,它相当于声明了一个委托private int deletegate TestAdd(int x ,int y ),前两个参数是相应方法的参数类型,最后一个为方法的返回类型。

那么上面的一句话就可以用委托的形式来实现:

private intdeletegate TestAdd(int x, int b );//定义一个委托,返回值为string类型

private int Add(int x,int y)

{

  return x + y;

}

TestAdd t=new TestAdd(Add);

t(4,8);

小结:我理解这句话就是简化了委托的声明,以及委托的实例化和调用。

但是我觉得和介绍的“Limbda表达式实际上就是一个方法,只不过该方法是匿名方法(即没有名称的方法)”有点区别,感觉可以直接用addMethod当方法用,比如如下:

      int x1 = 5, y1 = 8;
MessageBox.Show("x1+y1=" + addMethod(x1, y1));

其实我理解是这样的,当上面的声明都是变量的时候和方法的声明没区别,但是让代码的可读性变难了,但是代码量减少了。

但是从委托的角度上看就和“匿名方法”挂钩了,而且简单了很多,Func<int, int, int>声明了一个委托,而且委托是匿名的,直接来一个委托的实例化,实例化addMethod,且右面的方法也是匿名的。

委托和方法的区别我在这里就不多说了,总之声明出来后就是一个委托实例,其中用到了匿名方法和匿名委托。

用lambda表达式声明委托的更多相关文章

  1. 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象

    本文需要对C#里的LINQ.Lambda 表达式 .委托有一定了解. 在工作中,经常遇到需要对比两个集合的场景,如: 页面集合数据修改,需要保存到数据库 全量同步上游数据到本系统数据库 在这些场景中, ...

  2. c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)

    c#封装DBHelper类   public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...

  3. lambda表达式与委托与线程初步谈论-基于刘铁锰视频观后操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. C#中通过Lambda表达式为委托传入更多的参数

    如: DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += (o, e) => { d ...

  5. 委托、Lambda表达式和事件

    1.1 引用方法      委托是寻址方法的 .NET 版本.委托是类型安全的类.它定义了返回类型和参数的类型.委托类不仅包含对方法的引用,也可以包含对多个方法的引用.      Lambda 表达式 ...

  6. C# Note2:委托(delegate) & Lambda表达式 & 事件(event)

    前言 本文主要讲述委托和Lambda表达式的基础知识,以及如何通过Lambda表达式实现委托调用,并阐述.NET如何将委托用作实现事件的方式. 参考:C#高级编程 1.什么是委托(delegate)? ...

  7. 深入学习C#匿名函数、委托、Lambda表达式、表达式树类型——Expression tree types

    匿名函数 匿名函数(Anonymous Function)是表示“内联”方法定义的表达式.匿名函数本身及其内部没有值或者类型,但是可以转换为兼容的委托或者表达式树类型(了解详情).匿名函数转换的计算取 ...

  8. 委托/lambda表达式/事件

    委托 委托是执行安全的类,它的使用方式与类类似(即都需要定义再实例化),不同在于,类在实例化之后叫对象或类的实例,但委托在实例化后仍叫委托,委托可以把函数作为参数传递. 语法声明: delegate ...

  9. 委托和lambda表达式,Action和Func

    1.为什么要用委托 我们为什么要有委托?任何东西存在即合理,不合理的也会被时间淘汰掉,委托既然存在肯定有存在的必要,我们来看一下什么时候可以用到委托. 接下来我们有个需求,就是调用一个方法,取出1-1 ...

随机推荐

  1. akka actor中的基本概念(学习小结)

    注:本文章是看blog后的一个阶段小结,只作为个人笔记, 原文链接:http://www.iteblog.com/archives/1154 官网地址贴上:http://doc.akka.io/doc ...

  2. Win10玩魔兽争霸不能全屏显示的设置教程

    Win10玩魔兽争霸不能全屏显示的设置教程: 1.右击桌面左下角的windows图标,显示图片内容,然后点击运行: 2.点击运行,有个输入框,输入regedit,点击确认: 3.显示win10注册表, ...

  3. 随手记今天跟的几个iOS项目代码的问题

    休了一阵子假期,今天刚回来上班,项目代码已经有挺大的变化了,我就先体验.发现.跟进问题. 第一个问题是点击某个cell就挂掉的现象,同事表示必现但挺神奇.由于挂掉的时候没有啥有意义的信息,所以先简单粗 ...

  4. [转] 解析LayoutSubviews

    转自: http://www.cnblogs.com/YouXianMing/p/3897543.html 从百度上搜索了一下layoutSubviews的用处,以下是搜索的结果,当然,笔者是会一一验 ...

  5. Ubuntu上搭建DokuWiki

    1.准备工作 1) 安装Apache sudo apt-get install apache2 2)在浏览器中输入http://localhost 如果现实It works则说明Apache安装成功, ...

  6. 如何用vs查看结构体布局

    今天遇到一个问题: 假设在每个系统的structA 结构不同,我们在windbg看了以后直接拿来用,自己定义成结构体,如何来验证这个结构体内存布局是否和windbg一致. 当然笨办法是自己一个个成员数 ...

  7. im 编辑命令总结

    一. VIM高亮 进入vim后,在普通模式下输入如下命令,开启php代码高亮显示   :syntax enable   :source $VIMRUNTIME/syntax/php.vim   二. ...

  8. 修改、设置root密码

    参考文档: http://zhidao.baidu.com/link?url=OaUTAj6FrMGDjbPZHWv3NNDOaIl3HNqZz_3lF_Zpi8oZpLkBfnHfPlpgE1EvN ...

  9. 又见拦截导弹(LIS)

    又见拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦截系 ...

  10. arm:c语言和汇编混合编程

    仅作演示. 1.C和汇编可相互调用,汇编子函数格式参考 汇编:普通的函数调用的汇编代码解析 http://www.cnblogs.com/mylinux/p/4139972.html 本文演示了 : ...