阅读之前,先确保对委托有基本的了解,传送门 c#进阶之浅析委托和事件.

lambda表达式雏形第一步

在委托那篇文章,绑定的的方法都是具名函数,为了简化书写,可以换成匿名函数

public delegate void Write();
public delegate void Read(int x, string str);
public delegate int Get(int y);
static void Main(string[] args)
{
Write write = new Write(delegate() {
Console.WriteLine("write"); });
Read read = new Read(delegate (int x, string y){
Console.WriteLine("read"); });
Get get = new Get(delegate (int x) { return ; });
}

lambda表达式雏形第二步

把delegate()换为()=>,因为方法与委托参数签名的一致性,所以参数类型也可以去掉,上述可简化为

Write write = new Write(()=> { Console.WriteLine("write"); });
Read read = new Read(( x,y)=>{ Console.WriteLine("read"); });
Get get = new Get((x) =>{ return ; });

lambda表达式雏形第三步

 委托初始化可以直接绑定方法,不需要new,方法体只有一句代码可以省去{},且若有return,return关键字也可以去掉,简化为

Write write = () => Console.WriteLine("write");
Read read = (x, y) => Console.WriteLine("read");
Get get = (x) => ;

只需要记住 lambda表达式的本质是一个方法,那么 lambda表达式就会变得不再复杂

出自:博客园-半路独行

原文地址:http://www.cnblogs.com/banluduxing/p/9007494.html

本文出自于http://www.cnblogs.com/banluduxing 转载请注明出处。

c#进阶之lambda表达式的更多相关文章

  1. Python爬虫与数据分析之进阶教程:文件操作、lambda表达式、递归、yield生成器

    专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...

  2. 进阶系列(8)——匿名方法与lambda表达式

    一 匿名方法的介绍     匿名方法是为了简化委托的实现,方便调用委托方法而出现的,同时,匿名方法也是学好lambda表达式的基础.在委托调用的方法中,如果方法只被调用一次,这个时候我们就没有必要创建 ...

  3. C#进阶之全面解析Lambda表达式

    引言 在实际的项目中遇到一个问题,我们经常在网上搜索复制粘贴,其中有些代码看着非常的简洁,比如Lambda表达式,但是一直没有去深入了解它的由来,以及具体的使用方法,所以在使用的时候比较模糊,其次,编 ...

  4. .NET进阶篇05-Linq、Lambda表达式

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 内容目录 一.Lambda表达式1.匿名方法2.Lambda表达式二.Linq概述三.查询操作符1.linq初见2.常用查询操作符筛选排序分组连 ...

  5. Java基础进阶:内部类lambda重点摘要,详细讲解成员内部类,局部内部类,匿名内部类,Lambda表达式,Lambda表达式和匿名内部类的区别,附重难点,代码实现源码,课堂笔记,课后扩展及答案

    内部类lambda重点摘要 内部类特点: 内部类可以直接访问外部类,包括私有 外部类访问内部类必须创建对象 创建内部对象格式: 外部类.内部类 对象名=new外部类().new内部类(); 静态内部类 ...

  6. python进阶(1)Lambda表达式

    Lambda表达式 lambda表示的是匿名函数,不需要用def来声明,一句话就可以声明出一个函数 语法 函数名 = lambda 参数:返回值 注意点 1.函数的参数可以有多个,多个参数之间用逗号隔 ...

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

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

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

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

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

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

随机推荐

  1. BDE 升级到FireDAC

    BDE  Query Replace Str in files   by cnpack tools TQueryTFDQuery dmdb->qrypub->Open(sql); fdme ...

  2. Eclipse使用xdoclet1.2.3 生成hibernate配置文件和映射文件

    用ant和xdoclet生成hibernate配置文件可以为我们省去很多配置的操作,废话不多说,直接给栗子: 测试环境: eclipse:Eclipse Java EE IDE for Web Dev ...

  3. post get 区别

    GET 请求能被缓存,POST不能: POST 相对安全,GET的请求都包含在URL里 POST 可以通过request body 来传输较多的数据 URL有长度限制,会影响到GET请求,这个长度是由 ...

  4. 并发之CAS无锁技术

        CAS算法即是:Compare And Swap,比较并且替换:     CAS算法存在着三个参数,内存值V,旧的预期值A,以及要更新的值B.当且仅当内存值V和预期值B相等的时候,才会将内存值 ...

  5. Ant+jmeter+jenkins搭建测试的持续集成

    前提: Ant+jmeter 已经搭建完成并成功运行(参看ant+jmeter自动化性能测试) Jenkins在本地已经安装可运行(参看上一篇) 1.下载Jenkins安装 2.浏览器输入地址http ...

  6. UIScollView

        NSArray 类定义的方法 1.  makeObjectsPerformSelector:@select(aMethod) 简介:让数组中的每个元素 都调用 aMethod 2. makeO ...

  7. Django基础学习四_数据库的增删改查

    今天主要学习两个东西 1.如何对数据库做增删改查 2.如果将数据库中的数据用html的方式返回到前台 一.对数据库中增删改查操作 1.首先需要先见表,见表的方法我们在“http://www.cnblo ...

  8. Rotate image and fit show use canvas

    Description In the field of image processing, We always to show image after modified the image raw d ...

  9. 健康类App原型制作分享-Mindmate

    Mindmate是一款健康类App,主要是帮助人们快速入眠,放松情绪,它拥有小清新的界面,配图全是由插画组成,生动有趣.在这款原型中,为了保持App的原有特色,将插画通过图片组件导入进来:音乐播放界面 ...

  10. 文件读取草稿(excel,csv)

    using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using System.Data; using ...