子非鱼,安知鱼之乐?

我的程序人生,累并快乐着。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#学习笔记系列之二:delegate

Posted on 2006-09-03 13:33  Jason Cui  阅读(237)  评论(0编辑  收藏  举报

.NET语言比起其它面向对象的语言,多了一个东西delegate,(我不确定Java是不是有这个概念,好像没有看到过)。学起来挺难理解的,所以整理一下思路。

总体来说,委派就是一种把函数变成变量的方法,从而可以把函数进行赋值或者叠加。在PHP这一类语言中,语言本身使用了一种简单的特性来支持类似的基本方法,任何一个字符串变量如果后面带上括号就可以当作函数来执行,系统会自动查找与其变量值相同的函数来执行。

在C#中,委派大大加强了这个应用,你可以声明一个委派(普通的函数声明,修饰符加上delegate,只有包括参数的函数声明,没有函数体),然后使用这个委派名称声明具体的变量,这个变量现在就可以添加与委派声明方式相同的函数体了。而且,同一个委派变量可以叠加多个函数,静态函数和实例函数都可以。

当在某个位置以运行函数的方式调用该委派变量的时候,它所绑定的所有的函数会顺序执行。这就是VB.Net和C#中将自己的函数(方法)绑定到一个已有的类的事件(也是函数)并由对方主动调用的实现方式。其实,只不过是对方的类在它的某个方法中间调用了一下它自己的这个委派变量而已。