您的位置:首页 > 编程语言 > C#

C#中委托的理解和使用

2013-12-27 06:38 281 查看
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变量,如此循环,最终输出结果如下



由此示例可以了解到,当方法绑定在一个委托上时,调用委托就是调用绑定在该委托上的方法

如有出错,望大神门指教,万分感谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: