相信您一定听过这样的几个名词,拉姆达,委托,匿名函数。这三个名词之间有着一定的联系,至于他们的定义百度有很多,我来说说我理解的它们之间的联系和区别。

首先是匿名函数,在c# 2.0时加入了匿名函数。基本上是在定义委托的时候使用匿名函数。如下代码:

//声明一个委托类型
delegate void DelTest();
public void DoSomeThing()
{DelTest DelT2 = delegate(){System.Console.WriteLine("我是一个匿名方法!");};
}

delegate()={ //代码体 } 这样就是匿名函数。到了C# 3.0 时,有了拉姆达表达式,匿名函数就有了第二种方式。如下代码:

//声明一个委托类型
delegate void DelTest();
public void DoSomeThing()
{//到了C#3.0时代,又增加了一种更简便的拉姆表达式。DelTest DelT3 = () => { System.Console.WriteLine("其实,,,我也是一种匿名方法!");};
}

所有,匿名函数有两种:

1> 通过delegate 关键字定义。

2> 通过拉姆达表达式定义。

在有了匿名函数的情况下,定义委托变得更加的简洁明了。从C#1.0到 C#3.0 ,委托经过了这样的定义过程:

        //声明一个委托类型delegate void DelTest();public void Func1(){System.Console.WriteLine("我是一个即将被交由委托执行的方法!");}public void DoSomeThing(){//在C#1.0时代,委托是这样定义的。DelTest DelT = new DelTest(Func1);//到了C#2.0时代,有了匿名函数。通过匿名函数使代码更简洁。DelTest DelT2 = delegate(){System.Console.WriteLine("我是一个匿名方法!");};//到了C#3.0时代,又增加了一种更简便的拉姆表达式。DelTest DelT3 = () => { System.Console.WriteLine("其实,,,我也是一种匿名方法!");                 };}

后来,有了一种新的泛型委托Func<T> 和Action<T>

            Func<string> Func1 = () => { return "我是一个有返回值的泛型委托,如果我有多个参数传入,最后一个就是我的返回类型"; };Func<string, int> Func2 = (string a) => { return 1; };Action<string> Act1 = (string a) => { /*我是只有参数没有返回值的*/ };Action<string, int> Act2 = (string a, int b) => { /*我是只有参数没有返回值的*/ };

Func<T>和Action<T> 的区别:

相同:Func和Action都是泛型委托,参数都是可以多个。

不同:Func 是有返回值,当参数任意个时,最后一个就是返回值的类型。Action只有入参,没有出参,没有返回值。

关于拉姆达,委托,匿名函数相关推荐

  1. 多线程 委托 匿名函数 拉姆达 事件

    多线程 using System; using System.Threading;//引用的命名空间 这个命名空间有C#对线程的各种操作namespace aaa//瞎起的名字哈哈 {class Pr ...

  2. 匿名函数 和 拉姆达表达式

    匿名函数 匿名方法是创建与特定委托实例相关联的未命名代码块的一种方法.可以通过在代码块后面跟上delegate关键字来创建匿名方法. delegate void print();delegate st ...

  3. C# 匿名方法和拉姆达表达式

    "` "`代码如下: using System; using System.Collections.Generic; using System.Linq; using System ...

  4. 委托、lamda表达式..委托概念-匿名函数-泛型委托-Lamda表达式-多播委托

    委托 一.什么是委托? 将一个方法作为参数传递给另一个方法(参数类型为委托delegate).   声明一个委托类型. 委托所指向的函数必须跟委托具有相同的的签名(参数个数.参数类型.返回值一样). ...

  5. C#中委托的发展与匿名函数

    匿名函数(C# 编程指南) 匿名函数是一个"内联"语句或表达式,可在需要委托类型的任何地方使用. 可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数 ...

  6. C#委托(匿名函数)的各种变形写法

    C#委托(匿名函数)的各种变形写法 static void TestDelegate() {//类C++11风格:指定初始化容量20,使用初始化列表给部分成员赋值var lst = new List& ...

  7. [深入学习C#]匿名函数、委托和Lambda表达式

    转载自诗人江湖老,原文地址 匿名函数(Anonymous Function)是表示"内联"方法定义的表达式.匿名函数本身及其内部没有值或者类型,但是可以转换为兼容的委托或者表达式树 ...

  8. 匿名函数,Lambda表达式,委托

    C# 委托(Delegate) C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针.委托(Delegate) 是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变.委托( ...

  9. C#拉姆达(=)表达式

    前言: 之前小猪曾经分享过自己对C#委托的一点理解 其实在使用委托的过程中我们会大量的使用拉姆达(=>)表达式 介绍: "Lambda表达式"是一个匿名函数,是一种高效的类似 ...

最新文章

  1. java程序设计案例教程 钱银中_《Java程序设计案例教程》【价格 目录 书评 正版】_中国图书网...
  2. python turtle setheading_一文掌握Python绘图库Turtle的使用
  3. 全部关于测试–第1部分
  4. 平均每天呆实验室14小时,本科女生一作发表PNAS,直博北大!
  5. 人生苦短,Python之父要解开这个困惑
  6. day14(xml 编写及解析)
  7. mifare classic 2.2.3中文_Adobe Lightroom Classic CC 2019 v8.4.1 中文完整直装版
  8. Rose软件安装教程
  9. robocode_Robocode策略
  10. Linux在Ubuntu下安装TFTP
  11. 卡牌大师怎么玩_LOL卡牌大师技巧 卡牌大师攻略
  12. JAVA学习笔记之J2SDK主要包介绍 (马士兵 教学视频)
  13. window+mysql+免安装_mysql 5.7.18 免安装版window配置方法
  14. python爬虫笔记---1.13---第一篇
  15. Direct3D 11 Devices 之 Using Direct3D 11 feature data to supplement Direct3D feature levels
  16. 从WinMain函数看Windows程序内部运行机制
  17. Android多分辨率适配框架(1)— 核心基础
  18. 体验卓越品质 新贵Whql认证鼠标
  19. 基于JSP的在线学习网站 的设计与实现
  20. 本乃后山人,欲做堂前客。

热门文章

  1. [libxml2]_[C/C++]_[使用libxml2读取分析xml文件]
  2. 在网页调用微信支付,并解决IOS调用提示“缺少参数timeStamp”问题
  3. 车辆工程(1)——线性二自由度汽车模型的运动方程
  4. 《ROS机器人开发实践》使用RoboWare创建talker和listener程序
  5. 第三方登录之微信登录
  6. 海思平台(hi3559av100)异构多系统的使用Linux(2*A53+2*A73)+liteos(A53)+liteos(M7)
  7. [转载] 怎样应对一般的面试---Star 法则 - towerman
  8. Windows cmd命令(五)find和findstr指令
  9. EasyExcel · 写excel
  10. 02 BGP地址聚合