| 本帖最后由 许正龙 于 2013-3-1 10:31 编辑 
 先来看一个例子:
 某人有三子,让他们各自带一样东西出门,并带回一头猎物。
 可以理解为一种父亲对儿子的委托:
 猎物  办法(工具 某工具)
 三个人执行委托的方法各不相同
 兔子 打猎(工具 弓)
 野鸡 买(工具 钱)
 狼 诱捕(工具 陷阱)
 什么是委托?
 委托是一个类型,用来指称所有形式相同的方法(返回值类型相同而且参数也相同)。
 public delegate double Handler(double[] ds);
 public double Sum(double[] ds) {//在方法中执行操作。}
 public double Average(double[] ds) {//在方法中执行操作。}
 委托的实例化
 用new关键字(将方法名作为参数)生成一个委托对象,建立委托与方法的关联。
 例:
 Handler handler = new Handler(Sum);
 使用委托
 可以像使用变量一样使用委托的实例。使用委托时,需要给委托按要求传递参数。
 使用委托,则委托所关联的方法被调用。
 例:
 double[] weights={1.0,2.0,3.0,4.0};
 double result=handler(weights);
 一个委托可以通过+运算委托关联多个方法,叫多路广播委托(对应于单路广播委托)。
 如果此时使用委托,则所有的关联方法都被调用。
 例:
 Handler handler = new Handler(Sum);
 handler += new Handler(Average);
 
 说白了,委托就是第三方,调用者告诉第三方要做什么,然后调用者就不用管了
 这个委托(第三方)就会去调用方法去帮你实现
 
 委托的好处:
 1.相当于用方法作为另一方法参数(类似于C的函数指针)
 2.在两个不能直接调用的方法中作为桥梁,如:在多线程中的跨线程的方法调用就得用委托
 3.当不知道方法具体实现什么时使用委托,如:事件中使用委托
 
 
 
 c
 
 
 |