1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication1
  8. {
  9. delegate void DelegateGreet(string name); //声明委托类型
  10. class Lamda
  11. {
  12. public static void EnglishGreet(string name)
  13. {
  14. Console.WriteLine("GoodMorning!" + name);
  15. }
  16.  
  17. static void Main(string[] args)
  18. {
  19. DelegateGreet dele1 = Lamda.EnglishGreet; //创建委托变量 并对其进行赋值
  20. dele1("jack"); //调用委托方法
  21.  
  22. /*.net2.0提出的匿名方法对委托进行简化
  23. 这种方式和上面的方法的最大区别就是不用去再去创建委托变量 赋值
  24. 匿名方法就不需要写上面的东西
  25. */
  26. DelegateGreet dele2 = delegate(string name)
  27. {
  28. Console.WriteLine("GoodMorning!" + name);
  29. };
  30. dele2("jack");
  31.  
  32. /*.net3.5提出的Lamda表达式对委托方法再次简化
  33. Lamda 表达式 就是匿名方法 只是语法不同
  34. *
  35. * (param) =>expr param是输入参数列表 expr是一个表达式或者一系列语法
  36.  
  37. */
  38. DelegateGreet dele3 = (name1) => { Console.WriteLine("GoodMorning!" + name1); }; //圆括号里 如果是一个参数,可以省略括号,参数类型可写可不写
  39. dele3("jack");
  40. /*
  41. * 声明一个委托类型时候,无非就是返回值类型和参数类型不同
  42. * 在.net3.5 中提供了两个专门简化委托的泛型方法
  43. * Action没有参数,Action<>有参数 都不具有返回值
  44. * Func,Func<>
  45. * 其实上面两种那个泛型 的委托都是 系统已经给你定义好了 你直接用而已
  46. * 用以再次简化委托
  47. * 其实
  48. */
  49. //Action<>可以加载至多16个参数,然后这样做的好处就是自己不用事先去声明委托变量,很灵活方便
  50. Action<string,int > dele4 = (name1,name2) => { Console.WriteLine("GoodMorning!" + name1+"你今年"+name2+"岁了"); };
  51. dele4("jack",);
  52.  
  53. //Func实例 没有参数 只有返回值
  54. Func<string> dele5 = () => { return "没有参数只有返回值"; };// 因为只有返回值 可以把大括号去掉
  55. Console.WriteLine(dele5());
  56.  
  57. Console.Read();
  58. }
  59. }
  60. }

输出:

GoodMorning!jack
GoodMorning!jack
GoodMorning!jack
GoodMorning!jack你今年15岁了
没有参数只有返回值

C#委托 Lamda表达式的更多相关文章

  1. .net 委托 +lamda表达式

    1.委托与类同级 想当于定义了一个类型 如 delegate int Sum(int a, int b);// 在声明类之前声明 2.这里可以在类里写个函数 public int sumAB(int ...

  2. [.net 面向对象程序设计进阶] (5) Lamda表达式(一) 创建委托

    [.net 面向对象程序设计进阶] (5) Lamda表达式(一)  创建委托 本节导读: 通过学习Lambda表达式,学会创建委托和表达式目录树,深入了解Lambda的特性,让你的代码变的更加清晰. ...

  3. C#中委托,匿名函数,lamda表达式复习

    一.委托 1.就给类比较,类用class声明,委托用delegate声明. 2.委托要指向一个真正的方法. 3.委托的签名,要和指向的方法一样. //1.声明一个委托 public delegate ...

  4. 委托、Lambda表达式、事件系列03,从委托到Lamda表达式

    在"委托.Lambda表达式.事件系列02,什么时候该用委托"一文中,使用委托让代码简洁了不少. namespace ConsoleApplication2 { internal ...

  5. 委托、泛型委托、多播委托、匿名函数、lamda表达式、事件

    1.为什么要使用委托 将一个方法作为参数传递给另一个方法 2.委托概念 public delegate int 委托名(int a, int b); 声明一个委托类型,可以用访问修饰符修饰,deleg ...

  6. 解读ASP.NET 5 & MVC6系列(12):基于Lamda表达式的强类型Routing实现

    前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特性(Route和HttpXXX系列方法)来定义.本章,我们将 ...

  7. [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门

    [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门 本节导读: 认识表达式树(Expression Tree),学习使用Lambda创建表达式树,解析表达式树. 学习 ...

  8. [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用

    [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...

  9. lamda表达式学习

    lamda表达式 “Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型. 格式:( 形参列表 ) => { 函数体 } 所有 Lambda 表达式 ...

随机推荐

  1. MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO

    MySQL安装完server端和客户端后,登录Mysql时报错:[root@rhel204 MySQL 5.6.23-RMP]# mysqlERROR 2002 (HY000): Can't conn ...

  2. 【贪心+中位数】【新生赛3 1007题】 Problem G (K)

    Problem G Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  3. ThreadPoolExecutor详解

    线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int maxi ...

  4. winform —— 界面

    winform 界面简单介绍 窗体事件:理解为委托变量,指向哪个函数,就执行哪个函数.窗体:显示窗体的过程是一个通过模板造对象的过程.先走构造函数,构造函数中的InitializeComponent( ...

  5. js库开发--参数传递及方法修改

    <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">      ...

  6. checkbox,radio,selected相关操作

    1.radio:单选框 HTML代码: <input type="radio" name="radio" id="radio1" va ...

  7. for循环删除集合陷阱

    首先看下面的代码: import java.util.LinkedList;import java.util.List; public class DeleteCollection {         ...

  8. Mongoose的使用

    最近想做一个练手的App小项目.考虑到数据接口的问题,因为关系型数据库用的比较多,也有一定经验了,所以打算使用比较火的MongoDB作为数据库,下面就介绍一下Mongoose的使用方法吧. 概念:Mo ...

  9. SQL日期格式转换(经常用又经常忘记的东西)转载自http://www.cnblogs.com/wangyuelang0526/archive/2012/06/06/2538224.html

    Select CONVERT(varchar(100), GETDATE(), 8):14:53:14Select CONVERT(varchar(100), GETDATE(), 9): 06 6 ...

  10. ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered

    正如以下msdn论坛所述,Microsoft.Jet.OLEDB.4.0只有32bit,所以我们必须compile application to x86 platform. http://social ...