第二十六讲:深入委托
来源:互联网 发布:java gc日志分析工具 编辑:程序博客网 时间:2024/05/06 06:18
主要内容
1. 我们忽略的事件与委托
有关于窗口加载的系统预定义的原代码的理解
2. 定义,使用委托
分两步
1. 定义要使用的委托
2. 创建实例
3. 实践--说媒,娶媳妇的标准
4. 多播委托
1. 可以让一个委托去调用一系列的方法
2. 采用+=增加到执行序列,使用-=从序列移除
5. 匿名方法
没有方法签名,只有方法体
如:
delegate void del;
del d=delegate(object o,EventArgs e){};//注意这里是要加分号的
6. Lambda表达式
Lambda表达式是一个匿名方法,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。
例:
delegate void d(string msg);
d=msg=>{consol.writeline(msg)};
d("lambda表达式");
7. 实践--窗体互动
执行结果:
1. 我们忽略的事件与委托
有关于窗口加载的系统预定义的原代码的理解
2. 定义,使用委托
分两步
1. 定义要使用的委托
2. 创建实例
3. 实践--说媒,娶媳妇的标准
4. 多播委托
1. 可以让一个委托去调用一系列的方法
2. 采用+=增加到执行序列,使用-=从序列移除
5. 匿名方法
没有方法签名,只有方法体
如:
delegate void del;
del d=delegate(object o,EventArgs e){};//注意这里是要加分号的
6. Lambda表达式
Lambda表达式是一个匿名方法,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。
例:
delegate void d(string msg);
d=msg=>{consol.writeline(msg)};
d("lambda表达式");
7. 实践--窗体互动
委托,事件的使用
边看边实践,写的代码有点乱:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Con26{ class Program { public delegate void helloDelegate(string s); //定义一个委托 public static event helloDelegate test1;//定义一个事件 public delegate int addDelegate(int a, int b); //定义一个带两个参数且有整型返回值的委托 public static event addDelegate addMethod; static void Main(string[] args) { //***************委托:我的理解是它是就相当于一个数据类型,可以定义方法******* helloDelegate he = returnMessage;//这里就定义并初始化委托,它的值就是一个方法名 //************************************** he += returnMessage2;//虽说跟整型等数据类型同样可以使用+=运算符,但执行结果却是批处理的方式 //************使用delegate关键字还可以定义匿名方法,只是精简了代码,性能上无提升**** he += delegate(string s) { Console.WriteLine("这是一个匿名的方法" + s); }; //***************事件处理方式也可以是一个匿名方法********** test1 += delegate(string s) { Console.WriteLine("这又又又又。。。。。又是一个匿名的方法"+s); }; //************这是个Lamada表达式,这次要好好的理解它************* helloDelegate h1 = ss => Console.WriteLine(ss); h1("Lamada表达式的使用"); he("大家好啊!"); //************这是个还两个参数的Lamada表达式,而且还有返回值************* addDelegate add = (a, b) => a * b; int i = add(23, 34); //************有返回值的委托与事件************* addMethod +=new addDelegate(addM); Console.WriteLine(i); Console.WriteLine(test(12, 23));//被委托执行的方法得到返回值 Console.ReadKey(); } /// <summary> /// 还一个参数,返回并打印字符串 /// </summary> /// <param name="s">字符串参数</param> public static void returnMessage(string s) { Console.WriteLine("返回一个字符串串"+s); test1(s);//事件就是一个触发性的监视 } /// <summary> /// 还一个参数,返回并打印字符串 /// </summary> /// <param name="s">字符串参数</param> public static void returnMessage2(string s) { Console.WriteLine("返回第二个字符串串" + s); } /// <summary> /// 多个参数的方法 /// </summary> /// <param name="a">参数1</param> /// <param name="b">参数2</param> /// <returns>返回整型</returns> public static int test(int a,int b) { Console.WriteLine("我是被监视的对象"); return addMethod(a, b); } /// <summary> /// 多个参数的方法 /// </summary> /// <param name="a">参数1</param> /// <param name="b">参数2</param> /// <returns>返回整型</returns> public static int addM(int a, int b) { return a + b; } }}
执行结果:
像Lamada表达式,委托,匿名方法,扩展方法这些,田老师认为不必过深研究的东东,高手们用着跟玩笑似的,看来确实是高手,如果我们听老师的不求甚解,高手写的代码还直没办法看的懂。多多少少还是要深入一下,只要努力多码代码,理解是早晚的事儿!
0 0
- 第二十六讲:深入委托
- 第二十六节 深入委托实例补充
- 第二十六讲项目一
- 第二十六讲项目2
- 第二十六讲项目3
- 第二十六讲--深入剖析事务槽及Oracle多种提交方式
- 第二十六讲 ASP.NET身份验证(一)
- 第二十六讲 利用switch语句解决问题
- 第二十六讲项目1-投票表决器
- 第二十六讲项目2-成绩等级
- 第二十六讲项目二 成绩等级
- 第二十六讲项目七 构造菜单
- 提高篇第二十六讲项目2
- 提高篇第二十六讲项目2
- 第二十六讲项目3.3-选择排序
- Java基础:第二十六讲 从对象抽象出类
- JavaSE第二十六讲:包与导入语句剖析
- 第二十六讲项目4-本月有几天
- Maven
- 1+1的01是什么
- 第六周——对象做数据成员
- 时间函数
- hdu 4502 吉哥系列故事——临时工计划_简单dp
- 第二十六讲:深入委托
- 如何成为Android高手
- php生成随机密码的几种方法
- WIN7 64位旗舰版安装OFFICE2003 提示:“错误1919,配置ODBC数据源MS Access Database时发生错误ODEC错误”
- [FPGA]基于Qsys的Nios II流水灯系统设计
- 对链表的 操作
- C++默认参数
- U盘文件打不开了怎么恢复
- Cortex A8,RTC程序