1,匿名方法

匿名方法可以在声明委托变量时初始化表达式,语法如下

之前写过这么一段代码:

  1. delegate void MyDel(string value);
  2. class Program
  3. {
  4. void Print1(string value)
  5. {
  6. Console.WriteLine("方法1:{0}", value);
  7. }
  8. void Print2(string value)
  9. {
  10. Console.WriteLine("方法2:{0}", value);
  11. }
  12. void Print3(string value)
  13. {
  14. Console.WriteLine("方法3:{0}", value);
  15. }
  16. /// <summary>
  17. /// 执行委托方法
  18. /// </summary>
  19. /// <param name="d">委托类型参数</param>
  20. /// <param name="value">委托内方法的参数</param>
  21. void PrintFun(MyDel d, string value)
  22. {
  23. d(value);
  24. }
  25. static void Main(string[] args)
  26. {
  27. Program p = new Program();
  28. MyDel del1, del2;//声明委托变量
  29. del1 = p.Print1;
  30. del2 = p.Print2;
  31. p.PrintFun(del1, "已运行");
  32. p.PrintFun(del2, "已运行");
  33. Console.ReadKey();
  34. }
  35. }

现在可以改成这样:

  1. delegate void MyDel(string value);
  2. class Program
  3. {/// <summary>
  4. /// 执行委托方法
  5. /// </summary>
  6. /// <param name="d">委托类型参数</param>
  7. /// <param name="value">委托内方法的参数</param>
  8. void PrintFun(MyDel d, string value)
  9. {
  10. d(value);
  11. }
  12. static void Main(string[] args)
  13. {
  14. Program p = new Program();
  15.  
  16. //匿名方法
  17. Console.WriteLine("\n运行匿名方法");
  18. MyDel d1 = delegate(string value) { Console.WriteLine("方法1:{0}", value); };
  19. MyDel d2 = delegate(string value) { Console.WriteLine("方法2:{0}", value); };
  20. p.PrintFun(d1, "以匿名方法运行");
  21. p.PrintFun(d2, "以匿名方法运行");
  22.  
  23. Console.ReadKey();
  24. }
  25. }

2,Lambda表达式

匿名方法的简化

  1. delegate void MyDel(string value);
  2. class Program
  3. {
  4. /// <summary>
  5. /// 执行委托方法
  6. /// </summary>
  7. /// <param name="d">委托类型参数</param>
  8. /// <param name="value">委托内方法的参数</param>
  9. void PrintFun(MyDel d, string value)
  10. {
  11. d(value);
  12. }
  13. static void Main(string[] args)
  14. {
  15. Program p = new Program();//Lambda表达式
  16. Console.WriteLine("\n运行Lambda表达式");
  17. MyDel d3 = value => Console.WriteLine("方法3:{0}", value);
  18. p.PrintFun(d3, "以Lambda表达式运行");
  19.  
  20. Console.ReadKey();
  21. }
  22. }

C#委托总结-匿名方法&Lambda表达式的更多相关文章

  1. 委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解

    1.使用简单委托 namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyB ...

  2. C# delegate event func action 匿名方法 lambda表达式

    delegate event action func 匿名方法 lambda表达式 delegate类似c++的函数指针,但是是类型安全的,可以指向多个函数, public delegate void ...

  3. 18、(番外)匿名方法+lambda表达式

    概念了解: 1.什么是匿名委托(匿名方法的简单介绍.为什么要用匿名方法) 2.匿名方法的[拉姆达表达式]方法定义 3.匿名方法的调用(匿名方法的参数传递.使用过程中需要注意什么) 什么是匿名方法? 匿 ...

  4. 委托-异步调用-泛型委托-匿名方法-Lambda表达式-事件【转】

    1. 委托 From: http://www.cnblogs.com/daxnet/archive/2008/11/08/1687014.html 类是对象的抽象,而委托则可以看成是函数的抽象.一个委 ...

  5. C#多线程+委托+匿名方法+Lambda表达式

    线程 下面是百度写的: 定义英文:Thread每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段,它 ...

  6. 匿名函数 =匿名方法+ lambda 表达式

    匿名函数的定义和用途 匿名函数是一个"内联"语句或表达式,可在需要委托类型的任何地方使用. 可以使用匿名函数来初始化命名委托[无需取名字的委托],或传递命名委托(而不是命名委托类型 ...

  7. C# 从CIL代码了解委托,匿名方法,Lambda 表达式和闭包本质

    前言 C# 3.0 引入了 Lambda 表达式,程序员们很快就开始习惯并爱上这种简洁并极具表达力的函数式编程特性. 本着知其然,还要知其所以然的学习态度,笔者不禁想到了几个问题. (1)匿名函数(匿 ...

  8. 用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树

    这些对老一代的程序员都是老生常谈的东西,没什么新意,对新生代的程序员却充满着魅力.曾经新生代,好多都经过漫长的学习,理解,实践才能掌握委托,表达式树这些应用.今天我尝试用简单的方法叙述一下,让大家在五 ...

  9. 转帖:用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树

    用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树 这些对老一代的程序员都是老生常谈的东西,没什么新意,对新生代的程序员却充满着魅力.曾经新生代,好多都经过漫长的学习,理解,实践才能掌握委托 ...

随机推荐

  1. 中文路径读取乱码,json乱码

    strPath = 'E:\新建文件夹' #含有中文的路径,使用unicode函数转换. strPath = unicode(strPath , "utf8") 参考:http:/ ...

  2. dede的cfg_keywords和cfg_description无法显示

    问题:在生成html文件时,网页的keywords和description的content为空,但后台显示这两项是有值的.   解决方案: 1.设置 系统->系统基本参数->站点根网址 设 ...

  3. WPF之DataGrid控件根据某列的值设置行的前景色(色

    一种方法是 使用 datagrid的LoadingRow事件: private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs ...

  4. 我所理解的 Laravel 请求 生命周期

    转载自:https://laravel-china.org/topics/3343/my-understanding-of-the-laravel-request-life-cycle 当你使用一个工 ...

  5. 2018.07.04 POJ 3304 Segments(简单计算几何)

    Segments Time Limit: 1000MS Memory Limit: 65536K Description Given n segments in the two dimensional ...

  6. 2018.09.21 atcoder An Invisible Hand(贪心)

    传送门 简单贪心啊. 这题显然跟t并没有关系,取差量最大的几组买入卖出就行了. 于是我们统计一下有几组差量是最大的就行了. 代码: #include<bits/stdc++.h> #def ...

  7. 2018.08.16 洛谷P3607 [USACO17JAN]序列反转(线性dp)

    传送门 一道感觉比较简单的dp. 注意是要求翻转一个子序列而不是一段连续的数(被坑了很多次啊)... 看到数据范围果断开一个四维数组来dp一波. 我们显然可以用f[i][j][k][t]表示下标在[l ...

  8. IntelliJ IDEA 2017版 spring-boot与Mybatis简单整合

    一.编译器建立项目 参考:http://www.cnblogs.com/liuyangfirst/p/8372291.html 二.代码编辑 1.建立数据库 /* Navicat MySQL Data ...

  9. 如何更改myecelipse、eclipse的Project Explorer的背景颜色

    这个是我研究了很久发现的,因为myecelipse.eclipse本身是随着系统的颜色改变而改变的,windows系统都会随着系统改变而改变的,所以找了很多资料都没能改变它的背景色,今天发现了一个不错 ...

  10. HDU 3361 ASCII (水题,不说什么了)

    题意:给你n个十进制数,让你输出相应的ASCII. 析:无,没说的,直接输出就好了. 代码如下: #include <iostream> #include <cstdio> # ...