引言: 最初学习c#时,感觉委托.事件这块很难,其中在学习的过程中还写了一篇学习笔记:委托.事件学习笔记.今天重新温故委托.事件,并且把最近学习到和委托相关的匿名方法.Lambda表达式及泛型委托记录下来,以备复习使用. 委托: 日常工作中,常常见到委托用在具体的项目中.而且委托使用起来相对来说也是非常简单的,下面列举一个委托实例用以说明如何使用委托,代码如下: class Program { public delegate int CalculateDelegate(int x, int y)…
说明(2017-11-20 15:14:18): 1. 委托一直稀里糊涂的,有人说简单,有人说难,艹你们! 2. 其实主要是因为,平时不用委托也能解决大部分问题,所以都没有特意去用,网上也没有什么很好的应用例子,基本都是为了解释委托,生造出来的例子,没什么应用价值. 3. 这个计算器委托示例,是CZ的蒋坤老师讲的,还是比较容易学习的,他把委托的使用定为五步:1.准备方法.2.准备委托类型.3.定义委托变量.4.授权方法.5.调用方法. 4. 简单的委托,只需要返回一个参数就可以了.计算器因为是有…
说明(2018-4-6 20:31:03): 1. 昨天晚上看三层,看完第一天的最后一节,会员的修改和增加,感觉欲仙欲死,果断关机睡觉. 2. 上午搞了半天哈利波特的原版书epub的下载,结果都没发现一个排版能看的,就连多看卖的正版里面都是字体大小不一,遂决定先把爱丽丝看完再去寻找其他的. 3. 下午2点起床,开始对着电脑冥想,想那个窗体传值怎么弄的来着,拖出两个窗体来,怎么捣鼓都捣鼓不出来,就在这较上劲了,一直想到六点半,吃完我妈擀的面条,又想了一个小时,估计是8点的时候,终于想通了,能够实现…
委托 delegate 1.是一种全新的面向对象语言的特性: 2.开发事件驱动程序变得非常简单: 3.简化多线程难度. 理解委托:可以理解成一个方法的指针.(接收的变量是方法) 步骤: 1.声明委托,定义函数原型(返回值,参数类型个数)--定义在类的外面.相当于一个中介: 2.根据委托定义一个具体方法.(符合委托定义函数原型类型等一致)--定义在类里面.名称不同返回值类型,参数类型个数一致: 3.创建委托对象,实例化是需指明默认的方法. (1)委托 变量=new 委托(方法): (2)多窗体关联…
说明(2017-11-23 19:31:53): 1. 关于委托和窗体传值,一下午在网上查阅了大量资料,基本就是CSDN的论坛和博客园的文章,大家都在举例子,烧水.鸿门宴,看评论说还看到过沙漠足球的,真是跪了.. 2. 最后还是看一直了CZ杨洪波三层里的窗体传值,照着把代码写出来的,其实我第一次听说“窗体传值”这个概念,就是听得杨洪波讲的这个. 3. 最关键的一步,就是把字符串和方法,作为Form2的参数,传给Form2. 4. 虽然前面做了好几个委托的例子,也知道委托怎么写,但是这个传值就是不…
说明(2017-11-21 15:24:50): 1. 定义一个排序方法,参数是字符串数组,和委托.MySort(nums, string.Compare),调用时只需要更换里面的委托方法就行,或者直接里面用Lambda表达式. 2. 这个其实是为了引出下一节的匿名委托和Lambda表达式. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _04_委托排…
说明(2017-11-20 17:21:35): 1. 感觉难点都在冒泡排序上..貌似之前跳过去了没学啊!冒泡排序的精髓就在于,两两比较,最大的排到最后一位,再把前面的重新两两比较,把最大的排到倒数第二位,一直排完,最小的就在第一位了. 2. 两个排序方法,自己写的numCompare按数字大小排序,和系统自带的string.Compare按字符大小排序,分别授权给委托,哪个授权执行哪个方法. 3. 后面说要搞得再复杂一点,所以待续..To be continued.. 4. 忘了写,效果要在C…
说明(2017-5-30 11:38:06): 1. 窗体1传值到窗体2,只要实例化Form2,“Form2 frm2 = new Form2(txt1.Text)”,这里要给Form2加一个带参数的重载,并且继承this,因为要初始化.把txt1.Text传入窗体2接收就可以了. 2. 窗体2再传值回窗体1,就要用到委托了,因为不是传值,而是传方法(如果再实例化一个Form1,那就是打开一个新窗口了). (1)在Form1里加一个方法ShowMsg,作用是将参数msg赋值给txt1.Text.…
说明(2017-5-30 09:08:10): 1. 定义一个委托,public delegate void MyDel();无参数,无返回值. 2. 委托作为DoSth的参数,DoSth里面调用委托. 3. 写两个方法ShowTime和WriteTime. 4. main函数里面,DoSth参数是谁,就调用谁(ShowTime和WriteTime). 5. 注意System.DateTime.Now.ToString(),和File类的使用. 代码: using System; using S…
说明(2017-5-29 22:22:50): 1. 语法:public delegate void mydel();这一句在类外面,命名空间里面. 2. 专门新建一个方法,参数是委托: public static void test(mydel mdl) { mdl(); } 3. 在main函数里,调用这个方法,参数是要使用的方法: test(show); 4. 感觉test这个方法只是一个中转站,里面存放委托和参数. 例1: using System; using System.Colle…