以一个例子说明:
//定义原形
public delegate void MessageEventHandler(object sender, EventArgs e);
public event MessageEventHandler MessageReceived;
//注册事件
MessageReceived += new MessageEventHandler(HandleIt);
//使用时
MessageReceived(this,aaa) //aaa是一个EventArgs对象
//定义的处理方法
private void HandleIt(object sender, EventArgs e)
{
.....
}
我想问,这样绕了一圈,本质上不还是在使用时调用一下HandleIt方法么?那么委派的优点究竟在哪里呢?到底有什么好处呢?和直接用函数调用区别在哪里呢?
请高人解答。
请给我个直接明了的回答,如果能再结合个例子说明也好,谢谢。
最佳答案
委托是CTS(公共类型系统)规定的5种类型之一(类类型、结构类型、接口类型、枚举类型、委托类型)。
通俗的说,委托是这样一种类型:这种类型的实例,指向其它类型的方法。
委托主要就是提供间接调用、构建双向系统用的,他为消息模型和多线编程提供了基础。
再说说事件,事件并不是一种类型,它是一个方法,它是为了简化委托的注册而出现的。并不是1楼所说的那样:事件是一种委托,这是严重的误导!