• 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; }
        }
    

      

  • 相关阅读:
    vue实例讲解之axios的使用
    实例讲解webpack的基本使用第四篇
    实例讲解webpack的基本使用第三篇
    实例讲解webpack的基本使用第二篇
    写好一篇技术博客的正确姿势是什么
    实例讲解js正则表达式的使用
    一个综合实例讲解vue的基础知识点。
    vue实例讲解之vue-router的使用
    .NET 串口通信
    textarea赋值时换行符无效的解决方法
  • 原文地址:https://www.cnblogs.com/lishuyi/p/11404649.html
Copyright © 2020-2023  润新知