B\S备忘录20——委托
来源:互联网 发布:淘宝人参 编辑:程序博客网 时间:2024/04/29 11:34
由于在工作流的任务中使用了委托,并且是调用的CreateDelegate这个方法,那么这次就稍微说一下。
首先,委托是一种引用类型,其实就是一种类,而这种类有些特殊,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
实际上这里并不难,写一个简单的例子就能说明。
//定义委托,它定义了可以代表的方法的类型 public delegate void EatDelegate(string name); public class Program { private static void EatDinner(string name) { Console.WriteLine("晚饭吃" + name); } private static void EatLunch(string name) { Console.WriteLine("午饭吃" + name); } //注意此方法,它接受一个EatDelegate类型的方法作为参数 private static void EatFood(string name, EatDelegate Eat) { if (Eat != null) { Eat(name); } } static void Main(string[] args) { EatFood("龙虾", EatLunch); EatFood("江豚", EatDinner); Console.ReadKey(); } }那么在我的工作流代码中,使用的是工作流.Handler=方法。这种写法叫做方法绑定到委托,也简单的写个例子说明一下。
static void Main(string[] args) { EatDelegate EatWhat; EatWhat = EatLunch; EatWhat("龙虾"); Console.ReadKey(); }委托可以绑定多个方法,绑定的方式是通过“+=”来实现的。
static void Main(string[] args) { EatDelegate EatWhat; EatWhat = EatLunch; EatWhat += EatDinner; EatWhat("龙虾"); Console.ReadKey(); }这里,要对整个委托做一个处理,如果委托不是第一次绑定方法,那么将传的参数再次传给第二个绑定的方法
//注意此方法,它接受一个EatDelegate类型的方法作为参数 private static void EatFood(string name, EatDelegate Eat) { if (Eat != null) { Eat(name); } }好吧,这里可能写的不太对,只是为了实现委托的多次绑定,执行的结果显示:
中午吃龙虾
晚上吃龙虾
这样的意思就是委托是多次绑定了方法,方法执行的顺序就是绑定过程的顺序。
这次就研究到这吧,下次说说反射出来的MethodInfo是怎么绑定到委托的。
0 0
- B\S备忘录20——委托
- B\S备忘录21——使用反射将委托挂钩
- B\S备忘录02——分页
- B\S备忘录05——团控
- B\S备忘录07——Request
- B\S备忘录08——工作流
- B\S备忘录01——此吧神兽“焰正马 ”
- B\S备忘录番外篇——你们要的总结
- B\S备忘录11——新技能AOP get√
- B\S备忘录14——IIS添加MIME类型
- B\S备忘录16——tomcat压缩版安装
- B\S备忘录17——cas服务端配置
- B\S备忘录18——cas连接数据库
- B\S备忘录19——就说多查查有好处
- B\S备忘录23——Excalibur!!不对,是Expression!!
- B\S备忘录25——集群初识
- B\S备忘录03——不会做?多做做就会了
- B\S备忘录04——接下来进入迂回路线,先发个邮件短信看看
- SCTP协议开发资料
- VS C#编写的简单通讯录
- windows下java项目cpu占用较高原因分析
- Oracle 短路评估
- 调用有道词典查词
- B\S备忘录20——委托
- double,int与String之间转换
- Github上优秀的Objective-C项目简介
- Android_Intent_文章列表
- Spring MVC-HandlerExceptionResolver
- Socket、SocketServer与WebSocket的关系与区别
- Java反射机制的学习
- tomcat 配置server.xml 指定端口就可以直接打开项目。
- 算法练习:TopK_1