1.原始的委托 (.net 1.0)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Threading;
  10.  
  11. namespace WindowsFormsAppLINQ
  12. {
  13. public partial class Form1 : Form
  14. {
  15. public delegate void MyDelegate();
  16. public Form1()
  17. {
  18. InitializeComponent();
  19.  
  20. MyDelegate myDelegate = new MyDelegate(DoSomething);
  21.  
  22. myDelegate();
  23.  
  24. }
  25.  
  26. public void DoSomething()
  27. {
  28. MessageBox.Show("Hello");
  29. }
  30. }
  31. }

2.Action预定义委托, 节省了委托的定义.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace WindowsFormsAppLINQ
  11. {
  12. public partial class Form2 : Form
  13. {
  14. public Form2()
  15. {
  16. InitializeComponent();
  17.  
  18. Action myDelegate = new Action(DoSomething);
  19.  
  20. myDelegate();
  21. }
  22.  
  23. public void DoSomething()
  24. {
  25. MessageBox.Show("Hello");
  26. }
  27. }
  28. }

3.Lambda表达式, 再省掉方法定义.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace WindowsFormsAppLINQ
  11. {
  12. public partial class Form3 : Form
  13. {
  14. public Form3()
  15. {
  16. InitializeComponent();
  17.  
  18. Action myDelegate = new Action(() => { MessageBox.Show("Hello"); });
  19.  
  20. myDelegate();
  21. }
  22. }
  23. }

4.一对小括号, 直接执行.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace WindowsFormsAppLINQ
  11. {
  12. public partial class Form4 : Form
  13. {
  14. public Form4()
  15. {
  16. InitializeComponent();
  17.  
  18. new Action(() => { MessageBox.Show("Hello"); })();
  19. }
  20. }
  21. }

总结,()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体,这是一个常规的套路,可以直接记住。

委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。的更多相关文章

  1. C#3.0新特性:隐式类型、扩展方法、自动实现属性,对象/集合初始值设定、匿名类型、Lambda,Linq,表达式树、可选参数与命名参数

    一.隐式类型var 从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var.隐式类型可以替代任何类型,编译器自动推断类型. 1.var类型的局部变量必须赋予初始值,包括匿名 ...

  2. [C#学习教程-委托]001.大道至简之委托(代理),匿名函数,Lambda表达式

    引言:此文翻译自CodeProject上的同名文章<C# Delegates,Anonymous Methods, and Lambda Expressions>,在此一起Mark一下,此 ...

  3. 【C#】委托中的匿名函数与lambda

    将方法作为方法的参数 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使 ...

  4. Lambda的分类(语句Lambda和表达式Lambda)

    学习自 <C#本质论> Overview 在上一文中,我们简而又简的了解了一下,匿名方法和Lambda表达式,关于匿名方法这里暂且不表,本文我们来更加详细的了解一下Lambda表达式. 本 ...

  5. Java 8特性探究(1):通往lambda之路与 lambda表达式10个示例

    本文由 ImportNew 函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口.比如Java标准库中的ja ...

  6. [Java] 设计模式:代码形状 - lambda表达式的一个应用

    [Java] 设计模式:代码形状 - lambda表达式的一个应用 Code Shape 模式 这里介绍一个模式:Code Shape.没听过,不要紧,我刚刚才起的名字. 作用 在应用程序的开发中,我 ...

  7. 一个将lambda字符串转化为lambda表达式的公共类

    一个将lambda字符串转化为lambda表达式的公共类.StringToLambda 使用方式如下: var module = new Module(); url = url.ToLower();/ ...

  8. JDK1.8新特性(一) ----Lambda表达式、Stream API、函数式接口、方法引用

    jdk1.8新特性知识点: Lambda表达式 Stream API 函数式接口 方法引用和构造器调用 接口中的默认方法和静态方法 新时间日期API default   Lambda表达式     L ...

  9. Lambda表达式的无参数无返回值的练习和Lambda表达式有参数有返回值的练习

    使用Lambda(无参无返回) 说明:给定一个厨师(Cook)接口,内含唯一的抽象方法makeFood,且无参数.无返回值.如下: public interface Cook{ public abst ...

随机推荐

  1. python全栈开发day42-固定定位等

    一.今日内容: 1.绝对定位盒子居中用法 left:50% margin-left:-盒子的一半宽度.       2.固定定位和固定定位的用法 返回顶部 固定导航栏:        3.阿里的字体图 ...

  2. asp.net core日志组件

    日志介绍 Logging的使用 1. appsettings.json中Logging的介绍 Logging的配置信息是保存在appsettings.json配置文件中的.因为之前介绍配置文件的时候我 ...

  3. 新巴巴运动网上商城 项目 快速搭建 教程 The new babar sports online mall project quickly builds a tutorial

    新巴巴运动网上商城 项目 快速搭建 教程 The new babar sports online mall project quickly builds a tutorial 作者:韩梦飞沙 Auth ...

  4. 潭州课堂25班:Ph201805201 并发(协程) 第十五课 (课堂笔记)

    #斐波那契 def fid(n): res = [] indx = 0 a = 0 b = 1 while indx < n : res.append(b) a,b = b,a+b indx + ...

  5. webstorm显示行号,结构预览

    1,代码结构浏览menu>view>file structure popupwindwows>tool windws >structure (alt+7)代码结构当JS代码量很 ...

  6. 2018年web最新面试知识点总结

    00.行内元素有哪些?块级元素有哪些? 空(void)元素有那些? 行内元素:a  b  span  img  input  select  strong 块级元素:div  ul  ol  li   ...

  7. Codeforces Round #406 (Div. 1) A. Berzerk 记忆化搜索

    A. Berzerk 题目连接: http://codeforces.com/contest/786/problem/A Description Rick and Morty are playing ...

  8. db2 事务日志

    曾经因为对DB2 的 NOT LOGGED INITIALLY 属性认识不足而吃了亏.当时需要往表中插入大量的数据,最初也没有考虑太多就使用了传统的insert 命令,由于数据量实在过于巨大,而且系统 ...

  9. orm Lite的使用

    1.什么是ORM Lite orm Lite(Object Relationanl Mapping Lite)是一种用于持久化保存java对象的框架,相对于标准的ORM包来说. 2. Demo ●声明 ...

  10. 经验:使用 Cache 时注意 DateTime.Now

    如果使用了缓存,比如方法 A 吧,那么你需要注意 DateTime.Now 对缓存的影响,简单来说,DateTime.Now 可能出现在两个地方: 在调用方,将 DateTime.Now 作为参数传递 ...