1,匿名方法

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

之前写过这么一段代码:

    delegate void MyDel(string value);
class Program
{
void Print1(string value)
{
Console.WriteLine("方法1:{0}", value);
}
void Print2(string value)
{
Console.WriteLine("方法2:{0}", value);
}
void Print3(string value)
{
Console.WriteLine("方法3:{0}", value);
}
/// <summary>
/// 执行委托方法
/// </summary>
/// <param name="d">委托类型参数</param>
/// <param name="value">委托内方法的参数</param>
void PrintFun(MyDel d, string value)
{
d(value);
}
static void Main(string[] args)
{
Program p = new Program();
MyDel del1, del2;//声明委托变量
del1 = p.Print1;
del2 = p.Print2;
p.PrintFun(del1, "已运行");
p.PrintFun(del2, "已运行");
Console.ReadKey();
}
}

现在可以改成这样:

    delegate void MyDel(string value);
class Program
{/// <summary>
/// 执行委托方法
/// </summary>
/// <param name="d">委托类型参数</param>
/// <param name="value">委托内方法的参数</param>
void PrintFun(MyDel d, string value)
{
d(value);
}
static void Main(string[] args)
{
Program p = new Program(); //匿名方法
Console.WriteLine("\n运行匿名方法");
MyDel d1 = delegate(string value) { Console.WriteLine("方法1:{0}", value); };
MyDel d2 = delegate(string value) { Console.WriteLine("方法2:{0}", value); };
p.PrintFun(d1, "以匿名方法运行");
p.PrintFun(d2, "以匿名方法运行"); Console.ReadKey();
}
}

2,Lambda表达式

匿名方法的简化

    delegate void MyDel(string value);
class Program
{
/// <summary>
/// 执行委托方法
/// </summary>
/// <param name="d">委托类型参数</param>
/// <param name="value">委托内方法的参数</param>
void PrintFun(MyDel d, string value)
{
d(value);
}
static void Main(string[] args)
{
Program p = new Program();//Lambda表达式
Console.WriteLine("\n运行Lambda表达式");
MyDel d3 = value => Console.WriteLine("方法3:{0}", value);
p.PrintFun(d3, "以Lambda表达式运行"); Console.ReadKey();
}
}

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. MyBatis高级查询

    -------------------------siwuxie095 MyBatis 高级查询 1.MyBatis 作为一个 ORM 框架,也对 SQL 的高级查询做了支持, MyBatis 高级查 ...

  2. 关于"undefined reference"错误

    这个错误换句话说: 链接的时候找不到实现的文件(谨记从这个入手!). 可能导致的原因有: 1. 没有链接库文件,包括静态库或动态库. 2. 链接文件的顺序问题,先后依赖问题,把被依赖的放后面. 3. ...

  3. pymysql基本的使用方法

    1.导入模块+创建连接 import pymysql # 1.通过python去连接数据库 conn = pymysql.connect(host="127.0.0.1",port ...

  4. gridview 级联删除、dataset

    gridview编辑列(不使用控件绑定数据源)需要如下代码:<asp:GridView ID="GridView1" runat="server" Aut ...

  5. 【Spring】Spring boot多数据源历险记

    一.问题描述 笔者根据需求在开发过程中,需要在原项目的基础上(单数据源),新增一个数据源C,根据C数据源来实现业务.至于为什么不新建一个项目,大概是因为这只是个小功能,访问量不大,不需要单独申请个服务 ...

  6. linux 下的 rsync 文件同步

    rsync是linux下的一款快速增量备份工具Remote Sync,是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等附加信息.rsync是用 “rsync ...

  7. 版本号比较函数-js

    面试前,让做的一个版本号比较函数. <script type="text/javascript"> var v1=prompt("请输入第一个版本号" ...

  8. asp.net状态保持

    1.首先如果不是asp.net webform而只是一个纯粹的html页面和ashx一般处理程序的话,因为http协议的无状态,每一次的页面请求都会重新实例化一个页面对象(注意实例化页面对象其实是通过 ...

  9. 594. Longest Harmonious Subsequence

    方法一:用一个map来辅助,代码简单,思路清晰 static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }( ...

  10. Spring AOP 切面实现操作日志

    创建接口注解日志类 package com.fh.service.logAop; /** * Created by caozengling on 2018/7/21. */ import java.l ...