事件是什么意思?

时间:2010-07-05 13:39:50

标签: .net events delegates

我在dotnet中学习了引用任何函数的委托。

事件是什么意思?有什么参考吗?它有一个中间层,并在内部使用委托。但是,那个中间层是什么?

实际上,我们可以用事件做什么?或者我们为什么要使用它?

为什么事件没有返回类型?为什么默认公开?

4 个答案:

答案 0 :(得分:2)

我认为事件是委托方法的集合。您可以根据需要为事件订阅尽可能多的事件处理程序。

如果要在代码中公开某人可以“注入”操作的点,则可以创建一个事件。例如,假设您有一个负责处理订单的类。您可能希望公开一个名为“OrderProcessed”的事件,并且将来有人使用您的订单处理类可以“挂钩”到OrderProcessed事件以执行诸如发送确认电子邮件之类的操作。因为事件是委托类型,所以您可以指定订阅该事件的所有方法都希望接收包含“订单”类型的参数

示例:

public class OrderEventArgs : EventArgs
{
     public MyOrderClass Order { get; set; }
     public Boolean Processed { get; set; }

     public OrderEventArgs(MyOrderClass order, Boolean processed)
     {
         Order = order;
         Processed = processed;
     }
}
public class OrderProcessor
{
     public delegate void OrderEventHandler(Object sender, OrderEventArgs e);

     public event OrderEventHandler OrderProcessed;

     public void ProcessOrder(MyOrderClass order)
     {
          //process the order...

          if(OrderProcessed != null)
               OrderProcessed(this,new OrderEventArgs(order,true));
     }
}

答案 1 :(得分:1)

事件就像是一个函数集合,只要“事件”发生就会调用它。因为它通常是火和忘记,所以不需要返回类型。

答案 2 :(得分:1)

在普通英语中,当您订阅某个事件时,会在发生事件时通知您,并提供零个或多个参数。

所以,object1可能会说“嘿,当有人点击btn1时,我想{委托弹出MessageBox的功能}”

并且object2可能会说“嘿,当有人点击btn1时,我想做{委托写入日志的功能}”

当有人按下按钮时,会告诉每个订阅者,并按照其代表的说法行事。

答案 3 :(得分:0)