lambda表達式與委托與線程初步談論-基于劉鐵錳視頻觀后操作

?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;//線程
using System.Threading;//引用線程方法namespace ConsoleApplication2
{class Program{static void Main(string[] args){//委托詳解//Func返回帶參數類型的委托方法且當方法含有多個參數時需要調用泛型<參數1,參數2……等等,最后加上返回值參數>//Action返回不帶參數類型的委托方法且當方法含有多個參數時與一樣Func一樣需要調用泛型<參數1,參數2……等等>//var func = new Func<int,int,int>(Add);//int sc = func(3,4);//Console.WriteLine("{0}++", sc);//var action = new Action<double,int>(Getround);//Console.WriteLine("{0}",action);//action.Invoke(3.14,5);                        //ProductFactory productFactory = new ProductFactory();//WrapFactory warpFact = new WrapFactory();////定義委托去獲得產品的名稱//Func<Product> Product1 = new Func<Product>(productFactory.Father);//返回Product的類型的產品名稱//Func<Product> Product2 = new Func<Product>(productFactory.Mother);//模板方法            //logger newlog=new logger();////action委托將事件記錄器當做參數去記錄//Action<Product> log = new Action<Product>(newlog.Logger);//回調方法////將委托得到名稱產品復制到box的產品信息中//Box box1 = warpFact.WrapProduct(Product1,log);//工廠包裝以這個產品名稱的產品兩個參數//Box box2 = warpFact.WrapProduct(Product2,log);//Console.WriteLine(box1.Product.Name);//Console.WriteLine(box2.Product.Name);//lambda表達式應用//(x, y) => { return x + y; }lambda表達式//Dosomething<int>((int x,int y)=>{return x+y;},3,4);//完整版本//Dosomething((x, y) => { return x + y; }, 3, 4);//簡化版本因為泛型委托當中含有類型推斷所以直接省略了一部分int//多線程://Student stu1 = new Student() { ID = 1,Pencolor=ConsoleColor.Yellow};//Student stu2 = new Student() { ID = 2, Pencolor = ConsoleColor.Green };//Student stu3 = new Student() { ID = 3, Pencolor = ConsoleColor.Red };//stu1.DoHomework();//stu2.DoHomework();//stu3.DoHomework(); //直接同步調用//Action action1 = new Action(stu1.DoHomework);//Action action2 = new Action(stu2.DoHomework);//Action action3 = new Action(stu3.DoHomework);//定義委托//action1.Invoke();//action2.Invoke();//action3.Invoke();//間接同步調用//action1+=action2;//action1+=action3;//action1.Invoke();//多播委托-間接同步調用//Thread thread1 = new Thread(new ThreadStart(stu1.DoHomework));//Thread thread2 = new Thread(new ThreadStart(stu2.DoHomework));//Thread thread3 = new Thread(new ThreadStart(stu3.DoHomework));//thread1.Start();//thread2.Start();//thread3.Start();//顯式異步調用//Task task1 = new Task(new Action(stu1.DoHomework));//Task task2 = new Task(new Action(stu2.DoHomework));//Task task3 = new Task(new Action(stu3.DoHomework));//task1.Start();//task2.Start();//task3.Start();//顯式異步委托調用//action1.BeginInvoke(null,null);//action2.BeginInvoke(null,null);//action3.BeginInvoke(null,null);//隱式異步委托調用//for (int i = 0; i < 10; i++)//{//    Console.ForegroundColor = ConsoleColor.Cyan;//    Console.WriteLine("Main thread:{0}", i);//    Thread.Sleep(500);//}
        }//static int Add(int x, int y) {//    int s = 0;//    s = x + y;//    Console.WriteLine("{0}",s);//    return s;//}//static void Getround(double x,int y) {//    for (int i = 0; i < y; i++) //    {//        Console.WriteLine("{0}",x);//    }//}        static void Dosomething<T>(Func<T,T,T> func,T x,T y) {T res=func(x,y);Console.WriteLine(res);}}class Student {//public int ID { get; set; }//字段聲明構造器//public ConsoleColor Pencolor { get; set; }//public void DoHomework() //{//    for(int i=1;i<=5;i++)//    {//        Console.ForegroundColor = this.Pencolor;//        Console.WriteLine("學生ID:{0},做了{1}小時作業",this.ID,i);//        Thread.Sleep(500);//    }//}
    }//class logger//    //記錄事件觸發的情況//{//    public void Logger(Product prot) //    {//        Console.WriteLine("產平名稱:{0},產品價格:{1},生產日期:{2}",prot.Name,prot.Price,DateTime.UtcNow);//    }//}//class Box//{//    //包裝產品信息 字段//    public Product Product//    {//        get;//        set;//    }//}//class Product//{//    //生產產品名稱 字段//    public string Name//    {//        get;//        set;//    }//    public double Price//    {//        get;//        set;//    }//}//class WrapFactory//{//    //包裝工廠//    //實際就是一個方法//    public Box WrapProduct(Func<Product> getProduct, Action<Product> log)//定義了一個產品類型的委托//    {//        Box box = new Box();//        Product Product = getProduct.Invoke();//將產品從委托的invoke方法當中獲得//        if (Product.Price >= 50)//        {                //            log(Product);//        }//        box.Product = Product;//將產品賦值為box的產品信息使得box有了產品//        return box;//返回該產品//    }//}//class ProductFactory //{//    //需要生產的產品1//    public Product Mother()//    {//        Product Prot = new Product();//        Prot.Name = "士力架";//        Prot.Price = 78;//        return Prot;//    }//    //需要生產的產品2//    public Product Father()//    {//        Product Prot = new Product();//        Prot.Name = "牙膏";//        Prot.Price = 12.5;//        return Prot;//    }//}
}

請復制代碼后操作,謝謝,此處推薦劉鐵錳老師的視頻 https://www.bilibili.com/video/av7606481/?p=23 希望能和大家一起進步

轉載于:https://www.cnblogs.com/sandaman2019/p/10420654.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449842.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449842.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449842.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2020-11-21

獲取數據后&#xff0c;需要對數據進行合并&#xff0c;通常是日期&#xff0c;也有對相同公司進行合并 下面就研究數據合并的常用方法&#xff1a; 目錄appendmergeon屬性how屬性&#xff08;inner&#xff0c;outer&#xff0c;left &#xff0c; right&#xff09;indicato…

走技術線,還是技術管理線?

最近因為要給剛畢業的學生做一次演講&#xff0c;所以就職業發展這類話題先以寫博客的形式做一些思考&#xff0c;希望屆時能給同學們帶來質量更高的內容。我在《駕馭你的“職場布朗運動”》一文中談了25條職場感悟并提出了“走技術線&#xff0c;還是技術管理線&#xff1f;”…

[Nikon D80]櫻花盛開的校園

花開花落&#xff0c;陽春三月&#xff0c;隨身背著相機在學校里游走&#xff0c;不斷的尋找視角。知道自己拍的不好&#xff0c;總覺得自己拍的片有各式各樣的缺陷&#xff0c;也許這就是大師與學徒的區別吧。用好手頭的裝備&#xff0c;出好片&#xff0c;鍛煉Visual Effect …

「LG2664 樹上游戲」

題目 這真是一道神仙的一批的題目 定義\(s(i,j)\)表示從點\(i\)到點\(j\)經過的顏色數量 設 \[sum_i\sum_{j1}^ns(i,j)\] 求出所有的\(sum_i\) 考慮點分治 對于一個點我們用兩種方式來統計其答案 這個點作為分治重心時&#xff0c;分值區域內所有點到這個點貢獻這個點不是分治重…

DUBBO 使用問題記錄

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 官方ISSUE參考 https://github.com/alibaba/dubbo/issues 注冊中心ZookeeperRegistry.doSaveProperties warn 2014-10-1419:56:51WARN …

真格量化學習處理——幾個功能小函數

真格這周是學習使用了不少,功能算是很不錯,但在做的時候也發現了一個問題: 數據缺失:我在做回測,要求獲取每天的delta值,并從中篩選條件值時,報錯,顯示無數據。不得不使用pass,影響我的回測連貫性。 現在開始講下,我做的幾個功能函數: 算起來,挺煩的,就是各種細節…

軟件技術發展的驅動力

軟件產品的終極目標是為了實現用戶需求從而滿足人們的需要。也正是為了不斷滿足人們的需要使得軟件行業不斷向前發展。比如&#xff0c;新的算法&#xff08;MPEG-1、MPEG-2、MPEG-4、H.264、……&#xff09;等的出現都在當時為了滿足不同的需要而被發明。然而&#xff0c;人們…

The Model Driven Software Network

國外的一個模型驅動軟件開發的討論社區&#xff0c;The Model Driven Software Network這個社區討論的都是模型驅動開發相關的話題&#xff0c;雖然建立不久&#xff0c;但加入的人越來越多&#xff0c;建立群組的是Mark Dalgarno以下是一些討論: Textual v Graphical models W…

無敵簡單快速的文件服務器sgfs

前言 想要構建一個Linux文件服務器&#xff1f;看看下面幾個要求是不是你想要的&#xff1f; 1、只需要單節點部署就夠了 2、部署啟動簡單&#xff0c;下載之后&#xff0c;一鍵啟動&#xff0c;一鍵關閉 3、不需要任何其他的依賴安裝&#xff0c;而且運行時占用內存資源少 4、…

springboot多數據源配置

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 之前在介紹使用JdbcTemplate和Spring-data-jpa時&#xff0c;都使用了單數據源。在單數據源的情況下&#xff0c;Spring Boot的配置非常…

pyhon量化數據處理小細節3---日期格式轉換

不同的數據文檔&#xff0c;會獲得不同日期格式&#xff0c;常見的有str(20200101),datetime(20200101),又或者是2020-01-01&#xff0c;,2020-1-1,20-1-1&#xff0c;20-Apr_20th,2020/01/01,20/01/01等等&#xff0c;總之類型很多。因此需要我們對日期格式進行統一化。這里我…

面向對象和基于對象

面向對象大家都很熟悉&#xff0c;可是基于對象就不一定了。兩個聽起來好象是同一回事&#xff0c;而事實上它們卻千差萬別。基于對象是指&#xff1a;我們采用對象封裝技術&#xff0c;將數據和操作捆綁在一起&#xff0c;但是并沒有合理地使用多態、繼承等面向對象技術進行軟…

CSS margin 屬性簡介

CSS margin 屬性 設置外邊距的最簡單的方法就是使用 margin 屬性。 margin 屬性接受任何長度單位&#xff0c;可以是像素、英寸、毫米或 em。 margin 可以設置為 auto。更常見的做法是為外邊距設置長度值。下面的聲明在 h1 元素的各個邊上設置了 1/4 英寸寬的空白&#xff1a;h…

MVC中使用代碼創建數據庫(code first +mysql+EF)

1.新建一個mvc項目 2.安裝mysql需要的幾個文件 EntityFramework、MySql.Data&#xff08;6.9.12&#xff09;和MySql.Data.Entity &#xff08;6.9.12&#xff09; 這里有幾點要注意 1.MySql.Data和MySql.Data.Entity 版本必須一致 2.我試用了6.10的版本 要報錯 3.我測試沒有問…

github 學習使用

博主第一次使用github&#xff0c;所以會將過程全成描述歡迎使用Github注冊安裝進入倉庫&#xff0c;創建、修改、上傳文件。強制推送強制覆蓋上傳文件歡迎使用Github 注冊 直接進入github官網&#xff1a;https://github.com 點擊sigh up 進行注冊 直接填寫即可然后驗證通過…

Java中9大內置基本數據類型Class實例和數組的Class實例

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、Java中9大內置幾本數據類型&#xff1a; 對于對象來說,可以直接使用對象.getClass()或者Class.forName(className);、類名.class都可以…

軟件質量管理之困境與對策思考

相信在不少與軟件開發相關的企業內&#xff0c;質量管理部門與軟件開發部門在日常運作中形成了如下圖所示的“啞鈴形”組織結構。 開發部門執行質量管理部門所制定的流程&#xff0c;通過提供證據的形式將各種流程執行后的數據反饋給質量管理部門&#xff08;包括缺陷率和各種流…

GDI+用PNG圖片做半透明異型窗口

{*******************************************************}{ }{ GDI用PNG圖片做半透明異型窗口 }{ }{ 版權所有 (C) 2008 QQ:…

java Spring Boot中使用Swagger2構建API文檔

1、添加Swagger2的依賴 在pom.xml中加入Swagger2的依賴 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.2.2</version> </dependency> <dependency><groupId&g…

什么是 FreeMarker

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 轉自官方文檔&#xff0c;只是記錄下官方在線手冊地址&#xff1a;http://freemarker.foofun.cn/ FreeMarker 是一款 模板引擎&#xff…