如题
老是对委托和事件他们两个的关系弄不清楚 
大家来讨论下吧 
讨论越详细越欢迎!分数酌情给

解决方案 »

  1.   

    先说下我的理解, 可能是理解错的,欢迎大家指正我在用的时候需要这么些东西:委托声明, 事件, 委托传递的函数, 处理某操作的类(委托和事件在这里), 调用委托的类处理类classCount里声明委托delegate和自定义个委托的事件(怎么在这里表达这个委托和事件的关系呢), 还有个方法Compute处理计算操作, 然后在该方里抛出事件(是这样理解为抛的是事件吗还是说触发事件, 还是抛的是结果),返回这个处理的结果(即委托声明的参数);调用类classMain里实例化一个处理类的对象classCount, 注册委托(也可说是定阅事件, 格式[classCount.事件 += new 委托声明(委托定义的方法)]) , 当然这个时候是没做任何处理的, 处理要找个入口进去, 那就是调用方法Compute, 触发事件, Compute处理后的结果通过事件的参数从处理类classCount抛出到调用类来(不知道有没说错,实际上是委托声明的那个签名, 委托定义的方法的签名与其相同), 好象在哪看到过一句话:委托支持参数传递.事件触发后进行的处理就写在委托定义的方法里了,就象我们经常用的class1.button1.Click += new System.EventHandler(this.button1_Click)里的button1_Click.  vs.net对System.EventHandler的解释是表示处理不包含事件数据的事件的方法, 我有些不明白???????
    是说不象前面说的从classCount里抛出事件返回classCount里处理的结果吗? 好了, 就说这些先, 请指教
      

  2.   

    事件是对象发送的消息,以发信号通知操作的发生。操作可能是由用户交互(例如鼠标单击)引起的,也可能是由某些其他的程序逻辑触发的。引发事件的对象称为事件发送方。捕获事件并对其作出响应的对象叫做事件接收方。在事件通信中,事件发送方类不知道哪个对象或方法将接收到(处理)它引发的事件。所需要的是在源和接收方之间存在一个媒介(或类似指针的机制)。.NET Framework 定义了一个特殊的类型(Delegate),该类型提供函数指针的功能。委托是可保存对方法的引用的类。与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调。虽然委托具有许多其他的用途,但这里只讨论委托的事件处理功能。一个委托声明足以定义一个委托类。声明提供委托的签名,公共语言运行库提供实现。下面的示例显示了事件委托声明。
    public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);
    该语法与方法声明的语法相似,但是 delegate 关键字通知编译器 AlarmEventHandler 是一个委托类型。按照约定,.NET Framework 中的事件委托有两个参数:引发事件的源和该事件的数据。AlarmEventHandler 委托的实例可以绑定到任何一个与其签名匹配的方法上,例如下面的示例中显示的 WakeMeUp 类的 AlarmRang 方法。
    public class WakeMeUp 
    {
        // AlarmRang has the same signature as AlarmEventHandler.
        public void AlarmRang(object sender, AlarmEventArgs e)
        {...};
        ...
    }
    只有当事件生成事件数据时才需要自定义事件委托。许多事件,包括一些用户界面事件(例如鼠标单击)在内,都不生成事件数据。在这种情况下,类库中为无数据事件提供的事件委托 System.EventHandler 便足够了。其声明如下。delegate void EventHandler(object sender, EventArgs e);
    事件委托是多路广播的,这意味着它们可以对多个事件处理方法进行引用。有关详细信息,请参见 Delegate。委托考虑了事件处理中的灵活性和精确控制。通过维护事件的已注册事件处理程序列表,委托为引发事件的类担当事件发送器的角色。