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.mzph.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…