日期:2014-05-17  浏览次数:20826 次

用 事件 时,必须 要委托么?
搜了委托的示例,也会提到事件,但是演示 委托功能时,可以不用事件


但是,搜索所有事件的例子,基本都会有委托

用事件时,一定要委托么 ? 

再有,为什么要使用事件? 什么情况下适合使用事件?

------解决方案--------------------
事件就是一种委托
------解决方案--------------------

Sender sender  = new Senser();
Receiver receiver = new Receiver(sender);
sender.TriggerEvent();

------解决方案--------------------
http://www.cnblogs.com/xuting/archive/2008/08/26/1276318.html

推荐
------解决方案--------------------
事件本质上是委托,其实自己用的时候很少,在windows窗体程序中,编写事件的方法时自动通过委托将事件与指定的方法进行委托
------解决方案--------------------
事件即委托,是用来减少依赖的。 一个类的方法如何让别人调用,可以new、可以用静态,还可以把 这个方法传递出去,跟传递一个参数一样。

------解决方案--------------------
额,我这么说你可明白“事件必须是委托,委托未必是事件”

好了不需要再说啥了,中学滴哲学课,数学课都这么教滴,你应该能理解了把(充分和必要)
------解决方案--------------------
至于什么情况下是什么

事件可以用委托代替,委托不一定能用事件代替

常规情况下:“必须依靠外面才能确定方法,使用委托;而不需要外面的方法,甚至是从class内部发出滴通知外面接收的东西,使用事件”

大体上是这样
1.我委托你办事,这事我办不好,必须委托你来办--这是委托
2.我已经办好,需要通知你来接收(当然你接不接收,可以有,可以没有,反正我已经办好)--这是事件
------解决方案--------------------
收集的代码 事件和委托
委托会在后面赋值的时候被覆盖,事件赋值一个执行一个,一下收集的测试代码
----------------系统委托EventHandler

----------------------------事件(封装)
    public event SearchHandler search;
    public event SearchHandler Search {
        add {
            search += value;
        }
        remove {
            search -= value;
        }
    }


--------------------------------------------------------------------简单的委托例子
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace T2
{
    //委托必须是参数类型和返回类型相同,并且用deletegate修饰
    class Computer
    {
        public int Add(int x, int z) {
            return x + z;
        }

        public int Sub(int x, int z)
        {
 &nb