一:委托的优越之处
1:与委托的签名(由返回类型和参数组成)匹配的任何方法都可以分配给该委托。这样就可以通过编程方式来更改方法调用,还可以向现有类中插入新代码。只要知道委托的签名,便可以分配自己的委托方法。
2:将方法作为参数进行引用的能力使委托成为定义回调方法的理想选择。例如,可以向排序算法传递对比较两个对象的方法的引用。
二:委托中的EventArgs基类
EventArgs是一个委托声明,这里的参数,前者是一个对象(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1),后面是包含事件数据的类的基类。
其实简单点说就是对象(object)sender导致了某个事件的发生,事件的内容就是(e)
在程序中的事件处理函数就是依赖EventHandler实现的:
比方说你点了一个按钮,程序怎么知道应该用哪个函数来处理这个动作呢?那么EventHandler会告诉程序:"button1(sender)被点击(e)了,请调用对应的处理函数"。当然这个函数是谁,这个函数要做什么,是由你自己写的。
再深入一层,这个过程实际上就是:你的动作被windows捕获,windows把这个动作作为系统消息发送给程序(可以看message结构),程序从自己的消息队列中不断的取出消息,并在消息循环中寻找对应的处理方式,这时message结构中的类似于sender和e就起到了引导程序使用正确的处理函数的作用。