书上说委托可以在运行时判断,但我用正常的方法也可以实现,希望能举个例子说明一下,谢谢~

解决方案 »

  1.   

    当函数需要嵌套函数时,而被嵌套的函数又不固定在某个类中时,需要用委托
    当然,接口也可以实现这种功能,不过特殊情况,比如你用到是一个已封装的类,那么,委托可以实现你的功能,但接口实现不了.
    举例吗,一时想不起来动人的例子,但今天这个版就有一个贴是用委托来解决问题的例子,那个类子接口解决不了,好象是什么ToolBar或Menu调动态装配件子窗口的问题,你找找,好象那个案例是用委托解决的,而且是接口解决不了的
    另外接口和委托的最大区别是,接口需要事前声明,但委托不用,如果你需要把一个已固化到DLL中的方法当参数事,就只能用委托了.
      

  2.   

    书上说是可以动态调用,是怎么体现出来的,就拿事件来说,事件调用的方法不还是我手动指定的吗?怎么能体现在运行时动态调用呢?谢谢
    ----------------------------------------------
    “运行时动态调用”是说,你可以写代码添加或删除事件绑定的方法,假设你是根据用户的选择来添加事件绑定的方法,那么用户选择不同的值时调用的方法就不同(与在事件中判断用户的选择来执行相应的代码有本质不同),这就是运行时动态调用。委托的典型用法是回调和事件(事件其实也属于回调)。你多看看委托的具体应用就明白了,比如Thread,Control.Invoke,等等。其实很多地方委托可以用接口来代替。JAVA中没有委托,所以Thread就用的接口实现的。
      

  3.   

    委托可以指向方法,但又是一个对象,所以可以把多个方法制定到委托,比如组成一个委托数组。然后进行一连串的调用。比较经典的就是异步Invoke.
    http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/misMultithreading.mspx