事件、委托和函数指针

经过我的学习和查阅资料,越来月觉得事件,委托以及函数指针这三者关系非同寻常的密切。

事实上我认为:C++中的事件(Event),以及C#中的事件(Event)和委托(Delegate)都于C语言中的函数指针密不可分。

其实C++和C#中的Event都是函数指针数组,我们如果要捕捉某一事件进行相关的操作时,就必须要写一个事件处理函数EventHandler,然后再把它绑定到相应的事件上去。 其实这个EventHandler(函数名的地址值)就是Event函数指针数组里一个元素的值(我们知道在C语言中函数名可以作为函数的唯一标识,因此根据函数名就可以调用事件处理函数)这样子就实现了事件机制。 而C#中的委托Delegate变量 其实就是一个函数指针数组,指向一组(具有定参数和返回值类型和个数的)函数。

对于这个见解由于水平和时间受限,来不及写不同的代码示例。等闲一些后在写一些实实在在的代码示例来做比较更能证实我的猜想。

欢迎网友给出不同的见解!

posted on 2011-03-12 00:31  王祖文 邪恶  阅读(177)  评论(0)    收藏  举报

导航