委托初级篇——lambda表达式的推导

 public delegate void ConsoleWriteStr(string name,DateTime now);

 public delegate int DelegateAdd(int x, int y);

            //第一步 使用匿名函数             ConsoleWriteStr cws1= new ConsoleWriteStr(                 delegate(string name, DateTime now){                   Console.WriteLine("我叫{0},我喜欢学习{1}", name, now);                 }             );

            //第二步将delegate换成=> , =>的左边是参数列表,右边是函数体             ConsoleWriteStr cws2 =  (string name, DateTime now)  => { Console.WriteLine("我叫{0},我喜欢学习{1}", name, now); };

            //第三步去掉操作类型,原因是委托要求与方法签名一致             ConsoleWriteStr cws3 = ( name,  now) => { Console.WriteLine("我叫{0},我喜欢学习{1}", name, now); };

            //第三步去掉方法体的大括号,如果方法体只有一行,可以将大括号去掉             ConsoleWriteStr cws4 = (name, now) => Console.WriteLine("我叫{0},我喜欢学习{1}", name, now); 

            DelegateAdd func = (x, y) => { return x + y; };             DelegateAdd func1 = (x, y) => x + y;

            //系统自带的委托Action,该委托不带返回值             Action ac1 = () => { }; //无参数无返回值             Action<string> ac2 = x =>{ };  //泛型委托 一个参数可以去掉小括号             Action<string> ac3 = x => { };  //泛型委托             Action<string,int,DateTime,Action> ac4 = (x, y, z, a) => { };  //泛型委托

            //系统自带的委托Func,该委托带有返回值,最多16个参数,最后一个参数为返回值             Func<string> fun1 = () => " ";             Func<DateTime> fun2 = () => DateTime.Now;             Func<string, double,long, int> fun3 = (s,l, d) => { return 1+l; };

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

厚土Go学习笔记 | 28. go语言没有类 却可以在结构体或任意类型定义方法

在go语言中没有类。可是,是有方法的。 给结构体定义方法,在对应的 func 和方法名之间,加上方法的接收者就可以了。 比如,我们定义了一个结构体 type V...

3818
来自专栏hbbliyong

C#基础知识回顾--线程传参

  在不传递参数情况下,一般大家都使用ThreadStart代理来连接执行函数,ThreadStart委托接收的函数不能有参数, 也不能有返回值。如果希望传递参...

2896
来自专栏大内老A

通过实例模拟ASP.NET MVC的Model绑定机制:数组

[续《通过实例模拟ASP.NET MVC的Model绑定机制:简单类型+复杂类型]》]基于数组和集合类型的Model绑定机制比较类似,对于绑定参数类型或者参数类...

2969
来自专栏菩提树下的杨过

再谈Silverlight中的对象序列化/反序列化

曾经发过一篇如何在Silveright中利用XmlSerializer序列化对象的文章“Silverlight中的序列化”,限于当时的认识有限,一度以为silv...

2208
来自专栏恰童鞋骚年

.NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

开篇:在上一篇中,我们了解了自动属性、隐式类型、自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类、匿名方法以及常用的扩展方法。虽然,都是很常见的东西,...

1223
来自专栏技术博客

设计模式之三(工厂方法模式)

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法使一个类的实例化延迟到其子类。

1652
来自专栏性能与架构

认识一下 Java 11

可能很多人现在 Java8 的新特性还没用熟呢,Java 11 就已经来了,下面一起来看下 Java 11 的几个新特性:

1352
来自专栏GreenLeaves

C# lambda表达式

学了N多久的委托,终于告一段落,现在可以开始lambda的学习之旅了,但是在说lambda之前必须先说下C#中的匿名方法. 1、匿名方法 下面是一个字符串拼接的...

2176
来自专栏技术博客

设计模式之二(简单工厂模式)

  简单工厂模式根据提供的数据或者参数返回几个可能的类中的一个实例,说通俗点有点像面向对象编程中的多态性,一个基类,有多个派生类,在另外的调用程序中,根据参数来...

741
来自专栏Road

Redis 设计 --- 高效数据结构实现剖析

即使有链表来处理键冲突,但是当节点数量远远大于 size 时,如果不扩充哈希表规模,请自行想象。这也是 rehash 的存在意义,笔者认为这也是 redis 扩...

1503

扫码关注云+社区

领取腾讯云代金券