Lambda表达式演变历史
/// <summary>
/// 爬虫委托
/// </summary>
/// <param name="crawlerCode">爬虫编码</param>
delegate void CrawlerDelegate(string crawlerCode);
class Program
{
static void Main(string[] args)
{
{
//.net framework 1.0 最原始
CrawlerDelegate crawlerDelegate = new CrawlerDelegate(Execute);
crawlerDelegate.Invoke("爬取第1页");
} {
//.net framework 2.0 匿名方法
CrawlerDelegate crawlerDelegate = new CrawlerDelegate(delegate (string crawlerCode) { Console.WriteLine(crawlerCode); });
crawlerDelegate.Invoke("爬取第2页");
} {
//.net framework 3.0 Lambda
CrawlerDelegate crawlerDelegate = new CrawlerDelegate((string crawlerCode) => { Console.WriteLine(crawlerCode); });
crawlerDelegate.Invoke("爬取第3页");
} {
//.net framework 3.0 Lambda 参数类型可以省略,参数会被自动推算,俗称“语法糖”
CrawlerDelegate crawlerDelegate = new CrawlerDelegate((crawlerCode) => { Console.WriteLine(crawlerCode); });
crawlerDelegate.Invoke("爬取第4页");
} {
//.net framework 3.0 Lambda 如果方法体只有一行,可以省略大括号和分号
CrawlerDelegate crawlerDelegate = new CrawlerDelegate((crawlerCode) => Console.WriteLine(crawlerCode));
crawlerDelegate.Invoke("爬取第5页");
} {
//.net framework 3.0 Lambda 直接省略创建对象的写法,编译器内部自动波处理
CrawlerDelegate crawlerDelegate = (crawlerCode) => Console.WriteLine(crawlerCode);
crawlerDelegate.Invoke("爬取第6页");
} Console.ReadKey();
} /// <summary>
/// 执行爬虫
/// </summary>
/// <param name="crawlerCode">爬虫编码</param>
private static void Execute(string crawlerCode)
{
Console.WriteLine(crawlerCode);
} /// <summary>
/// 爬虫执行器
/// </summary>
/// <param name="crawlerContext">爬虫上下文</param>
/// <param name="method">爬虫逻辑</param>
static void CrawlerFerformer(CrawlerContext crawlerContext, CrawlerDelegate method)
{
method.Invoke(crawlerContext.CrawlerCode);
}
} /// <summary>
/// 爬虫上下文
/// </summary>
class CrawlerContext
{
/// <summary>
/// 爬虫编码
/// </summary>
public string CrawlerCode { get; set; }
}
Lambda表达式演变历史的更多相关文章
- Lambda表达式演变
Lambda表达式是一种匿名函数. 演变步骤: 一般的方法委托 => 匿名函数委托 => Lambda表达式 Lambda表达式其实并不陌生,他的前生就是匿名函数,所以要谈La ...
- C#Lambda表达式演变和Linq的深度解析
Lambda 一.Lambda的演变 Lambda的演变,从下面的类中可以看出,.Net Framwork1.0时还是用方法实例化委托的,2.0的时候出现了匿名方法,3.0的时候出现了Lambda. ...
- lambda表达式之进化
前言 在C#我们可以自定义委托,但是C#为什么还要内置泛型委托呢?因为我们常常要使用委托,如果系统内置了一些你可能会用到的委托,那么就省去了定义委托,然后实例化委托的步骤,这样一来既使代码看起来简洁而 ...
- 从匿名方法到 Lambda 表达式的推演过程
Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数. 以上是msdn官网对Lambda 表达式 ...
- C#中的Lambda表达式和表达式树
在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...
- Lambda表达式和表达式树
在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...
- C++11中的Lambda表达式
原文地址:C++中的Lambda表达式 作者:果冻想 一直都在提醒自己,我是搞C++的:但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C ...
- LinQ—Lambda表达式
概述 本篇博客主要解说lambda表达式,在这里将它的来龙去脉,主要是从托付,匿名函数这些方面过度讲的,当然,在讲托付和匿名函数的时候,主要是从Lambda的角度出发讲的,可能它们还具有其他的一些作用 ...
- Qt5中使用lambda表达式
c11新特性中加入了lambda表达式,所以Qt 也支持 需在.pro文件中加入 CONFIG += c++11 例子: QString program = "C:/Windows/Syst ...
随机推荐
- Spring Data JPA查询关联数据
1. Query方式@Query("select s from Store s join fetch s.products where s.user.id = :user_id") ...
- Android组件内核之Fragment管理与内核(二)
阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680本篇文章将先从以下三个内容来介绍Fragment管理与内核: [Fragm ...
- 迭代器,生成器,yield,yield from理解
迭代器 说到迭代器就得想说可迭代对象Iterable,实现了__iter__()方法的对象都是可迭代对象,例如很多容器,list ,set, tuples.使用iter方法可以把一个可迭代对象变成迭代 ...
- CF1228F
写了一个特别麻烦的做法 首先一共有三种情况:1.删掉一个叶子,2.删掉根的一个儿子,3.其他的节点 第一种情况会有两个度数为2的节点,第二种情况没有度数为2的节点,第三种情况会有一个度数为4的节点 然 ...
- Centos 文件权限修改
1.查看权限 # ls -l dirPath 2.修改权限,root权限执行(-R 子目录的权限都会改变) # chmod -R dirPath
- python之使用多个界定符分割字符串
主要是正则的编写 mport re line = 'asdf fjdk; afed, fjek,asdf, foo' # \s 匹配任意空白符,正则意思:分隔符可以是逗号,分号或者是空格,并且后面紧跟 ...
- koa2实现登录注册功能(ejs+mongodb版)
gtihub仓库地址:(由于国内处于敏感时期,github暂时无法访问) 主要使用的中间件: "ejs": "^2.7.1",(渲染模板) "koa& ...
- 【学术篇】CF932E Team Work && bzoj5093 图的价值
两个题的传送门 对于CF这道题, 分别考虑每种可能的集合大小, 每个大小为\(k\)的集合数量有\(\binom nk\)个, 所以最后的答案就是 \[\sum_{i=0}^n\binom{n}{i} ...
- css样式重叠、css样式继承、css 属性计算,,a元素下的文字颜色不能继承
1.属性的重叠 在渲染前浏览器将判断使用哪个样式 我们书写的样式会覆盖浏览器的自带样式 我们写的样式进行权重比较,规则如下 !import Infiniti无穷大 进制伪256行内样式 1000.id ...
- 转帖:maven(二) maven项目构建ssh工程(父工程与子模块的拆分与聚合)
出处:http://www.cnblogs.com/whgk/p/7121336.html 前一节我们明白了maven是个什么玩意,这一节就来讲讲他的一个重要的应用场景,也就是通过maven将一个ss ...