C#中有一种特殊的回调(callback)函数叫委托,委托是一种定义方法签名的类型,当需要把方法传递给其他方法时就要用到委托。
我们常常习惯把数据作为参数传递给方法,而当某个方法执行的操作不是针对数据进行的,而是对另一个方法进行操作,这时就需要用到委托。委托的定义:
delegate void IntMethod(int i);
在这个示例中,我们定义了一个委托IntMethod,并指定该委托每个实例都包含一个方法的细节,该方法带有Int类型的参数,返回void。其语法类似于方法的定义,但没有方法体,定义的前面要加上关键字deletage。,定义一个委托相当于定义一个类,所以可以在定义类的内部和外部定义委托,也可以在命名空间定义为顶层对象,根据定义的可见性,可以在委托定义上添加一般的访问修饰符:public,private,proteted等:
public delegate void IntMethod(int i);
下面通过一个简单的示例来理解学习委托:
首先创建一个类,该类中定义了两个方法,供委托回调
接下来创建一个委托回调方法的类
程序执行步骤:1.创建一个委托DoubleDelegate返回double类型,带有一个double类型参数,
2.创建了一个DoubleDelegate委托类型的数组,在数组里绑定了Program类中的两个方法,
3.通过for循环,遍历委托数组中的方法
4.执行计算显示数字方法(ProcessAndDisplayNumber),将委托数组遍历的索引和参数值分别传给该方法对应的两个变量上
5.委托类型变量action绑定了传进来的委托数组索引代表的方法,所以当调用这个action时相当于调用了它传进来的方法,将value值传给action委托的参数,相当于传给action代表的方法,程序自然跳转到绑定的该方法执行相关操作,然后将值在返回给result变量,如此循环,最终输出结果如下
由此示例可以了解到,当方法绑定在一个委托上时,调用委托就是调用绑定在该委托上的方法
如有出错,望大神门指教,万分感谢!