-
C#的委托
委托:顾名思义,让别人帮你办件事。委托是C#实现回调函数的一种机制。可能有人会问了,回调函数是个啥???
举个例子:我现在是一家公司的老板,公司现在在招聘.NET工程师,我们有一个小姐姐专门负责接受求职者投递的简历,我就告诉这个小姐姐,一旦收到新的简历就转发给我一份。
这个例子里小姐姐要做的工作:给我转发一份简历(回调函数里的操作),就是一个回调函数的作用。一旦有了满足条件(收到了新的简历),小姐姐就会转发给我(触发回调函数)
以上文章 转载为 千金不如一默 以下为原创
1 Action<string> CR = obj => MessageBox.Show(obj);//给他一个临时的obj作为接受值然后callaction的方法obj来接收收到的值 2 Action<string> CRA = new Action<string>(showmsg);//也可以这样写 3 new Action<object>((object err) =>MessageBox.Show((string)err))(""); 4 CR("1"); 5 //action委托用来代理一个任意过程给过程一个值=>指向一个方法然后就可以调用//action没有返回值 6 7 //Delegate无法在过程里声明必须声明全局 8 9 //Delegate委托是最广泛的他支持全部过程但是并没有上下两个精简和效率 10 11 MyDelegate mydelegate = new MyDelegate(s => GetStr(s)); 12 MyDelegate mydelegateA = new MyDelegate(GetStr);//也可以这样写 13 string get = mydelegate(1); 14 15 16 //func 委托用来执行一个没有传参且有返回值的过程 17 Func<string> getstr = new Func<string>(showmsgA); 18 string getAAA = getstr();
下面为一个委托演示
1 private void button1_Click(object sender, EventArgs e) 2 { 3 label1.Text = ""; 4 PictureBox pic = new PictureBox(); 5 6 pic.Width = 0; 7 pic.Height = this.Height; 8 pic.BackColor = Color.Red; 9 this.Controls.Add(pic); 10 label1.Parent = this; 11 label1.SendToBack(); 12 if (maxthread == 0) { 13 14 new Thread(() => { 15 maxthread++; 16 while (pic.Width < this.Width) 17 { 18 Thread.Sleep(1); 19 pic.BeginInvoke(new Action(() => { pic.Width = pic.Width + 2; })); 20 } 21 Thread.Sleep(1000); 22 CheckForIllegalCrossThreadCalls = false; 23 Random rd = new Random(); 24 int getjl = rd.Next(0, 100); 25 //100 26 27 if (getjl < 5) 28 { 29 label1.Text = "中大奖"; 30 31 } 32 33 if (getjl < 10 && getjl >5) 34 { 35 label1.Text = "电冰箱"; 36 37 } 38 39 if (getjl <= 100 && getjl > 10) 40 { 41 label1.Text = "未中奖"; 42 43 } 44 45 while (pic.Width > 0) 46 { 47 pic.BackColor = Color.Black; 48 Thread.Sleep(1); 49 pic.BeginInvoke(new Action(() => { pic.Width = pic.Width - 2; })); 50 } 51 52 53 maxthread--; 54 55 }).Start(); 56 57 }
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式