用lambda表达式声明委托
首先来分享一段代码:
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表达式声明委托的更多相关文章
- 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象
本文需要对C#里的LINQ.Lambda 表达式 .委托有一定了解. 在工作中,经常遇到需要对比两个集合的场景,如: 页面集合数据修改,需要保存到数据库 全量同步上游数据到本系统数据库 在这些场景中, ...
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
c#封装DBHelper类 public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...
- lambda表达式与委托与线程初步谈论-基于刘铁锰视频观后操作
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- C#中通过Lambda表达式为委托传入更多的参数
如: DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += (o, e) => { d ...
- 委托、Lambda表达式和事件
1.1 引用方法 委托是寻址方法的 .NET 版本.委托是类型安全的类.它定义了返回类型和参数的类型.委托类不仅包含对方法的引用,也可以包含对多个方法的引用. Lambda 表达式 ...
- C# Note2:委托(delegate) & Lambda表达式 & 事件(event)
前言 本文主要讲述委托和Lambda表达式的基础知识,以及如何通过Lambda表达式实现委托调用,并阐述.NET如何将委托用作实现事件的方式. 参考:C#高级编程 1.什么是委托(delegate)? ...
- 深入学习C#匿名函数、委托、Lambda表达式、表达式树类型——Expression tree types
匿名函数 匿名函数(Anonymous Function)是表示“内联”方法定义的表达式.匿名函数本身及其内部没有值或者类型,但是可以转换为兼容的委托或者表达式树类型(了解详情).匿名函数转换的计算取 ...
- 委托/lambda表达式/事件
委托 委托是执行安全的类,它的使用方式与类类似(即都需要定义再实例化),不同在于,类在实例化之后叫对象或类的实例,但委托在实例化后仍叫委托,委托可以把函数作为参数传递. 语法声明: delegate ...
- 委托和lambda表达式,Action和Func
1.为什么要用委托 我们为什么要有委托?任何东西存在即合理,不合理的也会被时间淘汰掉,委托既然存在肯定有存在的必要,我们来看一下什么时候可以用到委托. 接下来我们有个需求,就是调用一个方法,取出1-1 ...
随机推荐
- hdu 4730 We Love MOE Girls
http://acm.hdu.edu.cn/showproblem.php?pid=4730 直接用string类处理字符串. AC代码: #include<iostream> #incl ...
- PDO--PHP Data Objects
PDO的环境配置:开启支持PDO 在php.ini配置文件里开启: extension=php_pdo.dll extension=php_pdo_mysql.dll 在PDO操作中涉及到类:PDO. ...
- http Post 请求一网络资源返回字符串
public static String sendPost(String url, String param) { PrintWriter out = null; BufferedReader ...
- android Graphics(四):canvas变换与操作
前言:前几篇讲解了有关canvas绘图的一些操作,今天更深入一些,讲讲对画布的操作,这篇文章不像前几篇那么容易理解,如果以前没有接触过画布的童鞋可能比较难以理解,为什么会这样.我尽量多画图,让大家更清 ...
- Visual Studio 2015编译安装配置QT5.5.1(含QTWEBKIT)
尽管QT5.5.1和VisualStudio 2015都已经发布很久了,但是QT项目组视乎不会为QT5.5.1专门发布预编译的QT5.5.1 for windows(2015)版本的,也不会专门发布V ...
- Net::SSH::Perl 模块
<pre name="code" class="python">Net::SSH::Perl - Perl client Interface to ...
- csharp .net vb 复制图像
.NET Compact Framework 不支持 Image.Clone 方法,可是仍能够复制图像和图像的某些部分.以下的演示例子演示怎样运行以下操作: 定义一个方法以创建位图. 定义一个重载方法 ...
- Nginx 因 Selinux 服务导致无法远程訪问
文章来源:http://blog.csdn.net/johnnycode/article/details/41947581 2014-12-16日 昨天晚上处理好的网络訪问连接.早晨又訪问不到了. 现 ...
- NGUI字体贴图压缩以及相关Shader解读
一般游戏中,字体贴图是游戏贴图压缩的一个重点,特别是对于中文的游戏.考虑的字体贴图的特殊性,一般我们输出的字体贴图是不含颜色信息的,所以正常情况下,我们输出的字体贴图RGBA每一个通道都是一样的.这样 ...
- 解析stm32的时钟
STM32 时钟系统 http://blog.chinaunix.net/uid-24219701-id-4081961.html STM32的时钟系统 *** http://www.cnblo ...